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