【问题标题】:How to get the raw SQL of the query being executed by SQL Alchemy如何获取 SQL Alchemy 正在执行的查询的原始 SQL
【发布时间】:2014-05-11 10:55:24
【问题描述】:

我们使用 SQL alchemy 作为我们项目的 ORM。我正在尝试获取和分析生成的原始 SQL(通过 SQL alchemy)以提高性能。 有人可以告诉我是否有办法在原始 SQL 提交到数据库之前收集它。

【问题讨论】:

  • print MyModel.objects.all().query 应该给你原始查询。

标签: python sql django sqlalchemy


【解决方案1】:

您可以在实例化引擎时设置echo=True

>>> from sqlalchemy import create_engine
>>> engine = create_engine("mysql://localhost/mydb", echo=True)

这会导致所有 SQL 语句都通过普通的 Python 日志记录。您可以使用适当的日志配置轻松地将这些消息捕获到文件中,如这些Python logging examples 所示。

参考:SQLAlchemy Engine Configuration

【讨论】:

  • 感谢您的回复。通过将 echo 设置为 True,sql 将显示在命令提示符上。我正在寻找一种方法来收集 SQL Alchemy 事件中的原始 sql(例如:before_flush)并以编程方式检查原始 SQL。
  • @Tanu,实际上,设置 echo=True 会使这些语句通过常规 Python 日志记录得到记录。您所要做的就是设置日志文件处理程序或适当地设置系统日志,您就可以轻松捕获这些消息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-16
  • 2021-05-31
  • 1970-01-01
  • 2017-04-08
相关资源
最近更新 更多