gpt4 book ai didi

python - SQLAlchemy - 查询使用反射获得的表时, 'Table' 对象没有属性 '_query_cls'

转载 作者:行者123 更新时间:2023-12-04 09:02:55 24 4
gpt4 key购买 nike

我正在尝试使用 SQL Alchemy ORM 查询我使用 reflect 连接到的表(它是一个现有的数据库)。我尝试使用这里描述的方法:How to query a table, in sqlalchemy查询数据,但出现错误。

from sqlalchemy import create_engine, MetaData
from sqlalchemy.orm import Session

engine = create_engine(db_uri)
metadata = MetaData(engine)
metadata.reflect()
table = metadata.tables["events"]
Session.query(table).all()
我收到以下错误:
Traceback (most recent call last):
File "/home/nicolas/anaconda3/envs/chatbot_analytics/lib/python3.8/site-packages/IPython/core/interactiveshell.py", line 3343, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-25-bed7e1c6ef62>", line 1, in <module>
Session.query(tu).first()
File "/home/nicolas/anaconda3/envs/chatbot_analytics/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 1584, in query
return self._query_cls(entities, self, **kwargs)
AttributeError: 'Table' object has no attribute '_query_cls'
我使用版本 SQLAlchemy==1.3.19 .我使用 PostgreSQL 数据库。
像这样获取表时是否可以使用ORM查询数据?

最佳答案

Session.query(table)
您不是在调用 Session 的方法实例,但通过了 Table对象作为 self争论,因为 Session是类,而不是实例。 usual way to make a pre-configured session是使用 sessionmaker 创建 Session 的定制版本类,然后实例化它:
from sqlalchemy import create_engine, MetaData
from sqlalchemy.orm import sessionmaker

engine = create_engine(db_uri)
metadata = MetaData(engine)
metadata.reflect()
table = metadata.tables["events"]
Session = sessionmaker(bind=engine)
session = Session()
session.query(table).all()

关于python - SQLAlchemy - 查询使用反射获得的表时, 'Table' 对象没有属性 '_query_cls',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63523561/

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