1
在SQLAlchemy 引擎和會話上執行原始SQL之間有什麼區別?特別針對MSSQL數據庫。在SQLAlchemy引擎上執行原始SQL與會話
engine.execute( 'DELETE FROM MyTable的WHERE MYID IN(1,2,3)')
與
session.execute('DELETE FROM MyTable的WHERE MYID IN (1,2,3) ')
我已經注意到,在執行上的會話的SQL,導致MSSQL爲' 掛」。
也許有人對這兩個執行方式有不同的看法,或者有人可以指點我在哪裏進一步調查。
您可以在'create_engine'調用中設置'echo = True',並且每個查詢都將被打印出來。檢查兩者之間有什麼區別。 – Dekel
'engine.execute(..)'可能會創建一個新的事務,而'session.execute(..)'會使用會話的當前事務。我猜這種差異可能與此有關。嘗試按照@ Dekel的評論啓用'SQL'日誌來理解爲什麼?或者在'session.execute'之前執行'session.commit()'或'session.rollback()'來測試這個假設。 – van