试图从SQLaChemy查询中获取结果:
l = session.query(a.id)
这适用于正确的结果:
df = pd.read_sql(sql=l.statement,con=conn)
此外,这将返回正确的 SQL:
print(l)
但是,文档指示使用 pandas.read_sql:
df = pd.read_sql(l, conn)
应该返回结果,对吗?
参考: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_sql.html
session.query()
生成一个查询对象。请参阅 sqlalchemy.org
pd.read_sql(sql, con)
需要选择或文本对象。从您的参考:
sql : 字符串或 SQLAlchemy Selectable (select or text object) SQL 要执行的查询或表名。
您可以检查l
类型和l.statement
:
type(l)
'sqlalchemy.orm.query.Query'
type(l.statement)
'sqlalchemy.sql.annotation.AnnotatedSelect'
当你做print(query)时,查询类被定义为返回select语句。