【问题标题】:Print compiled sqlalchemy query打印编译的 sqlalchemy 查询
【发布时间】: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


【解决方案1】:

根据@ac24 的建议,从查询中删除了.all(),然后print emp 成功了。

【讨论】:

    猜你喜欢
    • 2011-08-03
    • 2021-10-15
    • 2017-06-17
    • 1970-01-01
    • 2017-11-04
    • 1970-01-01
    • 2021-05-04
    相关资源
    最近更新 更多