SQLAlchemy-reflect로 얻은 테이블을 쿼리 할 때 'Table'개체에 '_query_cls'속성이 없습니다.
Aug 21 2020
사용하여 연결 한 SQL Alchemy ORM으로 테이블을 쿼리하려고합니다 reflect
(기존 데이터베이스 임). 여기에 설명 된 방법을 사용하려고했습니다 : How to query a table, in sqlalchemy to query the data but I got an error.
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으로 데이터를 쿼리 할 수 있습니까?
답변
2 IljaEverilä Aug 21 2020 at 16:52
에
Session.query(table)
Session
인스턴스 가 아닌 클래스 이기 때문에 인스턴스 의 메서드를 호출하지 않고 Table
개체를 self
인수 로 전달합니다 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()