2014-03-31 56 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,你就可以輕鬆捕獲這些消息。 –