python – sqlalchemy表架构自动加载
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – sqlalchemy表架构自动加载,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1021字,纯文字阅读大概需要2分钟。
内容图文
我正在创建一个像这样的SQL炼金术表:
myEngine = self.get_my_engine() # creates engine
metadata = MetaData(bind=myEngine)
SnapshotTable = Table("mytable", metadata, autoload=False, schema="my schema")
我必须使用自动加载假,因为表可能存在或可能不存在(并且该代码必须在创建表之前运行)
问题是,如果我使用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表架构自动加载全部内容,希望文章能够帮你解决python – sqlalchemy表架构自动加载所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。