gpt4 book ai didi

python - sqlalchemy 表模式自动加载

转载 作者:太空宇宙 更新时间:2023-11-03 13:11:15 25 4
gpt4 key购买 nike

我正在创建一个像这样的 sql alchemy 表:

myEngine = self.get_my_engine() # creates engine
metadata = MetaData(bind=myEngine)
SnapshotTable = Table("mytable", metadata, autoload=False, schema="my schema")

我必须使用 autoload false 因为表可能存在也可能不存在(并且该代码必须在创建表之前运行)

问题是,如果我使用 autoload = False,当我尝试通过 session.query(SnapshotTable) 查询表(在它被另一个进程创建之后)时,我得到:

InvalidRequestError: Query contains no columns with which to SELECT from.

错误;这是可以理解的,因为表格尚未加载。

我的问题是:如何在使用 autoload = False 定义表元数据后“加载”它。

我查看了 schema.py 代码,似乎我可以这样做:

SnapshotTable._autoload(metadata, None, None)

但这对我来说不对...还有其他想法或想法吗?

谢谢

最佳答案

首先声明表模型:

class MyTable(Base):
__table__ = Table('mytable', metadata)

或者直接:

MyTable = Table("mytable", metadata)

然后,一旦您准备好加载它,调用它:

Table('mytable', metadata, autoload_with=engine, extend_existing=True)

这一切的关键在于 extend_existing=True

所有功劳归功于 SQLAlchemy 邮件列表中的 Mike Bayer。

关于python - sqlalchemy 表模式自动加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43042044/

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