gpt4 book ai didi

python - 未找到不同架构上的 SqlAlchemy 外键

转载 作者:太空宇宙 更新时间:2023-11-03 20:27:49 26 4
gpt4 key购买 nike

因此,在 2 个不同的架构上有 2 个不同的模型。其中一个与另一个具有外键关系。我运行 BaseOne.metadata.create_all(engine) 然后 BaseTwo.metadata.create_all(engine) 我得到 sqlalchemy.exc.NoReferencedTableError: 与列关联的外键。 ..

BaseOne = declarative_base(metadata=MetaData(schema="a"))
BaseTwo = declarative_base(metadata=MetaData(schema="b"))

class Parent(BaseOne):
__tablename__ = "parent"
parent_id = Column(Integer, primary_key=True)
other_col = Column(String(20))
children = relationship("Child", backref="parent")

class Child(BaseTwo):
__tablename__ = "child"
child_id = Column(Integer, primary_key=True)
parent_id = Column(Integer, ForeignKey("a.parent.parent_id"), nullable=False)

# Where I'm creating them
BaseOne.metadata.create_all(engine)
BaseTwo.metadata.create_all(engine)

应该注意,我还尝试通过 __table_args__ 明确说明架构。此外,我还连接到了我的 postgres 实例,并验证了父表是否存在于目标列中。

最佳答案

看来该问题是由于我使用了多个 MetaData 对象造成的。看来他们没能见到对方。简化为单个声明性基础并使用 __table_args__ 来声明模式似乎可行。如果有人知道如何声明多个元数据对象并且仍然能够使用 .create_all 请随时发帖。

关于python - 未找到不同架构上的 SqlAlchemy 外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57702264/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com