Можно ли в SQLAlchemy ссылаться на таблицы из другой схемы

Исторически сложилось, что описанные таблицы не были описаны схемой:

@as_declarative()
class Base():
    __name__: str
    id = Column(Integer, primary_key=True, index=True, autoincrement=True)

class Table(Base):
    ...

Решил добавить новые таблицы со схемой, которые могут ссылаться на старые таблицы:

DBase = declarative_base()

class New_Base(DBase):
    __table_args__ = {'schema': 'new'}

    id = Column(Integer, primary_key=True, index=True, autoincrement=True)

class N_Table(New_Base):
    table_id = Column(Integer, ForeignKey("table.id"))
    table = relationship('Table', back_populates='n_table')
    ...

Соответственно при запуске выпадает ошибка:

sqlalchemy.exc.NoReferencedTableError: Foreign key associated with column 'new.table_id' could not find table 'table' with which to generate a foreign key to targ
et column 'id'

В инете посмотрел, что можно указывать схему через точку, типа: "... ForeignKey("name_scheme.table.id")", но в старых таблицах схема не указана. Пробовал такие даже имена схем указывать: tables, public, db0

Можн ли вообще что-то сделать или уже смириться и все в одной схеме продолжать так и делать?


Ответы (0 шт):