在大熊猫read_sql中选择的SQL炼金术的方法



试图从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语句。