首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQLAlchemy -查询使用reflect获取的表时,' table‘对象没有'_query_cls’属性

SQLAlchemy -查询使用reflect获取的表时,' table‘对象没有'_query_cls’属性
EN

Stack Overflow用户
提问于 2020-08-21 21:11:09
回答 1查看 1.6K关注 0票数 2

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

代码语言:javascript
运行
复制
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()

我得到以下错误:

代码语言:javascript
运行
复制
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查询数据吗?

EN

Stack Overflow用户

回答已采纳

发布于 2020-08-22 00:52:57

在……里面

代码语言:javascript
运行
复制
Session.query(table)

您调用的不是Session实例的方法,而是将Table对象作为self参数传递,因为Session是类,而不是实例。usual way to make a pre-configured session将使用sessionmaker创建Session类的定制版本,然后实例化它:

代码语言:javascript
运行
复制
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()
票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63523561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档