簡體   English   中英

如何從sqlalchemy中的session.add()獲取原始sql?

[英]How to get raw sql from session.add() in sqlalchemy?

是從insert獲取原始sql的答案,我想知道如果我使用session.add() ,我是否可以獲得原始sql:

session.add(ormclass).compile()

如果希望SQLAlchemy記錄實際的原始SQL查詢,則始終可以在create_engine方法上設置echo=True 我知道這似乎很簡陋,但這是查看已執行查詢的最簡單方法。

engine = create_engine("postgresql://localhost/dbname", echo=True)

我對此的時間解決方案是,當發生錯誤時,會出現異常,並且在此異常中有參數和語句。

except Exception as inst:
    print(inst.statement % inst.params)

但問題仍然存在,因為如果沒有例外,我無法獲得語句和參數。 另外,打印中的字符串沒有引號,因此字符串不能直接在mysql中執行。

我顯示原始sql的方式(最常用[但不是全部]):

query = [my query that I created]
from sqlalchemy.dialects import mysql
str_query = query.compile(dialect=mysql.dialect(), compile_kwargs={"literal_binds": True})

然后我可以打印sql_query語句,它將顯示帶參數的查詢。 某些查詢不會顯示,例如批量插入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM