试图从sqlalchemy查询中获取结果:
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
答案 0 :(得分:1)
session.query()
生成查询对象。参见sqlalchemy.org
pd.read_sql(sql, con)
需要选择对象或文本对象。根据您的参考:
sql:字符串或SQLAlchemy可选(选择对象或文本对象)SQL 要执行的查询或表名。
您可以检查l
和l.statement
的类型:
type(l)
'sqlalchemy.orm.query.Query'
type(l.statement)
'sqlalchemy.sql.annotation.AnnotatedSelect'
当执行print(query)时,查询类被定义为返回select语句。