【发布时间】:2020-06-30 09:12:04
【问题描述】:
有没有办法打印由 sqlalchemy 创建的查询
emp = session.query(Employee).filter(*empfilters).order_by(Employee.Name).all()
我尝试过使用 SO 的 str(emp)、emp.statement.compile(dialect=postgresql.dialect(), compile_kwargs={"literal_binds": True}) 或其他解决方案,但无法重现任何内容。
这里的*empfilters 再次来自其他表(一对多连接的一部分),所以我想检查它究竟被编译成什么。
如果我尝试按照上面的方法进行操作,错误是 - 'list' object has no attribute 'statement'
【问题讨论】:
-
查询结束于
order_by(Employee.Name)。当您最后使用.all()时,查询运行并返回一个列表,因此您的错误消息。如果您删除.all(),您应该能够检查查询字符串。 -
global name 'postgresql' is not defined-- 需要添加@ac24吗? -
只需
str(emp)就可以让您在本机 sql 中查看查询。如果您还有其他问题,请包含更多代码来演示empfilters等。 -
谢谢。我可以通过删除
all()然后执行print emp来打印它
标签: python python-2.7 sqlalchemy