2014-03-31 53 views
1

我们正在使用SQL炼金术作为我们项目的ORM。我试图让&分析出于性能目的而生成的原始SQL(通过SQL炼金术)。 有人可以让我知道,如果有一种方法来收集原始SQL之前它被提交到数据库。如何获得SQL Alchemy正在执行的查询的原始SQL

+0

'打印MyModel.objects.all()query'应该给你原始查询。 – karthikr

回答

0

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

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

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

参考:SQLAlchemy Engine Configuration

+0

感谢您的回复。通过将echo设置为True,sql的get显示在命令提示符处。我正在寻找一种方法,我可以在SQL Alchemy事件中收集原始SQL(例如:before_flush)并以编程方式检查原始SQL。 – Tanu

+0

@Tanu,实际上,设置'echo = True'使得这些语句通过常规的Python日志记录进行记录。你所要做的就是设置一个日志文件hander或者正确设置syslog,你就可以轻松捕获这些消息。 –