У меня проблема с SQL Alchemy, пытаясь создать базу данных, я получаю:
"sqlalchemy.exc.NoReferencedTableError: внешний ключ, связанный с column 'estate_agent.person_id' не смог найти таблицу 'person' с который генерирует внешний ключ для целевого столбца" id"
Метаданные:
db = create_engine('postgresql+psycopg2:...//')
meta = MetaData()
meta.bind = db
Таблица лиц:
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')
Таблица ошибок:
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')
Нормальная таблица (создающая обычно 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')
Создание вызова:
meta.create_all(checkfirst=True)
Завершить журнал ошибок:
Traceback (последний последний вызов): Файл "database_client.py", строка 159, в meta.create_all (checkfirst = True) Файл "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/schema.py", строка 3404, в create_all table = tables) Файл "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", строка 1616, в _run_visitor conn._run_visitor (usercallable, element, ** kwargs) Файл "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", строка 1245, в _run_visitor ** kwargs).traverse_single (элемент) Файл "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py" , строка 120, в traverse_single return meth (obj, ** kw) Файл "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/ddl.py" , строка 699, в visit_metadata collection = [t для t в sort_tables (таблицы) Файл "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/ddl.py" , строка 862, в sort_tables {'foreign_key': visit_foreign_key}) Файл "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py" , строка 256, в траверсе return traverse_using (iterate (obj, opts), obj, visitors) Файл "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py" , строка 247, в traverse_using meth (target) Файл "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/ddl.py" , строка 853, в visit_foreign_key parent_table = fkey.column.table Файл "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", строка 725, в получить obj. dict [self. name] = result = self.fget(obj) Файл "/usr/local/lib/python2.7/dist-packages/sqlalchemy/SQL/schema.py", строка 1720, в строке столбца) sqlalchemy.exc.NoReferencedTableError: внешний ключ, связанный с column 'estate_agent.person_id' не смог найти таблицу 'person' с который генерирует внешний ключ для целевого столбца "id"