我正在尝试使用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查询数据吗?
发布于 2020-08-22 00:52:57
在……里面
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()
https://stackoverflow.com/questions/63523561
复制相似问题