Hi all, i am new to SQLAlchemy (simply wonderful!), and i'm writing some python scripts to do some experiment.
I've written a SINGLE python module with two classes which define two different tables (declarative_base) with a simple relationship and a single Foreign Key and everything WORKS fine as expected. Cool! :P Then, i've moved that two classes in two different python modules to better organize my code but now i got the following error: sqlalchemy.exc.NoReferencedTableError: Could not find table 'metadata' with which to generate a foreign key I understood the error message but i can't found a way to resolve this issue, can you help me? This is my "directory layout": test.py - the main python module SQLTableBuilder_Definition.py - class that define a table called "Definition" SQLTableBuilder_Metadata.py - class that define a table called "Metadata" test.py: ... engine = create_engine('sqlite:///test.db3', echo=True, encoding='utf-8' ) import SQLTableBuilder_Metadata metadata_table = SQLTableBuilder_Metadata.MetadataClass.__table__ metadata = SQLTableBuilder_Metadata.Base.metadata metadata.create_all(engine) import SQLTableBuilder_Definition definitions_table = SQLTableBuilder_Definition.DefinitionClass.__table__ metadata = SQLTableBuilder_Definition.Base.metadata metadata.create_all(engine) <== My script explode here with the following: Traceback (most recent call last): File "test.py", line 82, in <module> metadata.create_all(engine) ... sqlalchemy.exc.NoReferencedTableError: Could not find table 'metadata' with which to generate a foreign key Session = sessionmaker(bind=engine) Session.configure(bind=engine) session = Session() ... session.add(myObj) ... SQLTableBuilder_Definition.py: Base = declarative_base() class DefinitionClass(Base): __tablename__ = 'definitions' defId = Column(Integer, primary_key=True) Id = Column(String) classType = Column(String) version = Column(String) metadataId = Column('metadataId', Integer, ForeignKey('metadata.metadataId')) def __init__(self, node): self.Id = node.get("id")[len(IdName):] self.version = node.get("version") self.classType = node.get("class") SQLTableBuilder_Metadata.py: import SQLTableBuilder_Definition Base = declarative_base() class MetadataClass(Base): __tablename__ = 'metadata' metadataId = Column(Integer, primary_key=True) title = Column(String) defRef = relation(SQLTableBuilder_Definition.DefinitionClass, backref="metadata") def __init__(self, node): self.title = node If i remove relation and foreign key from the two classes, everything works fine again. I suppose that python can't find the metadata table (previously created without error) from SQLTableBuilder_Definition.py, but how i can "point him" in the right direction? Thanks for your attention. ps. >>> print sqlalchemy.__version__ 0.6beta1 -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalch...@googlegroups.com. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.