SQLalchemy de ne pas trouver de table pour la création de clé étrangère
J'ai un problème avec SQL Alchimie, tout en essayant de créer une base de données, j'obtiens:
"sqlalchemy.exc.NoReferencedTableError: clé Étrangère associée avec
la colonne " estate_agent.person_id " ne pourrait pas trouver la table 'personne' avec
pour générer une clé étrangère vers la cible colonne 'id'"
Meta datas:
db = create_engine('postgresql+psycopg2:...//')
meta = MetaData()
meta.bind = db
Personne de table:
tbl_person = Table(
'person', meta,
Column('id', Integer, Sequence('seq_person_id'), primary_key=True),
Column('name', String(100), unique=True, nullable = False),
Column('password', String(40), nullable = False),
Column('person_type_id', Integer, ForeignKey("person_type.id"), nullable = False),
Column('register_date', DateTime, default = datetime.now),
Column('pendencies', String(200)),
Column('active', Boolean, default = True),
schema = 'public')
Bug Table:
tbl_estate_agent = Table(
'estate_agent', meta,
Column('person_id', Integer, ForeignKey("person.id"), primary_key = True),
Column('prize_range_id', Integer, ForeignKey("prize_range.id"), nullable = False),
schema = 'public')
D'une table normale (création normalement, le fk)
tbl_person_agent = Table(
'person_agent', meta,
Column('person_id', Integer, ForeignKey("person.id"), primary_key = True),
Column('prize_range_id', Integer, ForeignKey("prize_range.id"), nullable = False),
schema = 'public')
Création Composez Le:
meta.create_all(checkfirst=True)
Complète du journal d'erreur:
Traceback (most recent call last): File "database_client.py", de la ligne de
159, dans
méta.create_all(checkfirst=True) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/schema.py",
ligne 3404, dans create_all
tables=tables) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py",
ligne 1616, dans _run_visitor
conn._run_visitor(visitorcallable, élément, **kwargs) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py",
ligne 1245, dans _run_visitor
**kwargs).traverse_single(élément) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py",
la ligne 120, dans traverse_single
de retour de la méthamphétamine(obj, **kw) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/ddl.py", de la ligne de
699, dans visit_metadata
collection = [t pour t dans sort_tables(tables) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/ddl.py", de la ligne de
862, dans sort_tables
{'foreign_key': visit_foreign_key}) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py",
la ligne 256, à traverse
retour traverse_using(iterate(obj, opts), obj, visiteurs) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py",
ligne 247, dans traverse_using
meth(cible) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/ddl.py", de la ligne de
853, dans visit_foreign_key
parent_table = fkey.la colonne.tableau de Fichier "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py",
ligne 725, dans obtenir
obj.dict[self.nom] = result = self.fget(obj) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/schema.py",
ligne 1720, dans la colonne tablekey)
sqlalchemy.exc.NoReferencedTableError: clé Étrangère associée avec
la colonne " estate_agent.person_id " ne pourrait pas trouver la table 'personne' avec
pour générer une clé étrangère vers la cible colonne 'id'
Vous devez vous connecter pour publier un commentaire.
En ajoutant la ligne suivante à mon
parent
table résolu mon problème. Dans le cas d'Déclarative:Autrement: SQLAlchemy - Classique Mappeur
Également essayer d'avoir un coup d'oeil dans ici (SI) trop, peut aider.
La solution est de remplacer les cordes avec les colonnes réelles:
Table
objet, ce qui signifie qu'il est effectivement créé. Je suis prêt à parier que dans le code d'origine de latbl_person
n'avait pas été créé et donc la chaîne de recherche échoue, parce que leMetaData
n'en contiennent pas.En cas de Déclaratif, j'ai résolu ce problème en important simplement la classe 'n'a pas pu être trouvé".