这是我的第一个问题。所以,如果重复或格式错误,我很抱歉。我搜索了其他问题,发现该错误很常见,但出现在多种情况下。
我有一个非常简单的 python 代码,我想在 MSSQL 中从 pyodbc 执行一个过程。
import pyodbc
conn = pyodbc.connect(r'DSN=myDSN')
cursor = conn.cursor()
query = r'{call myproc}'
cursor.execute(query)
在读到 ODBC 使用 call 来执行 MSSQL 中的过程后,我使用 call 而不是 exec。
我收到的错误如下:
Traceback (most recent call last):
File "myscript.py", line 26, in <module>
cursor.execute(query)
pyodbc.ProgrammingError: ('42000', '[42000] [Microsoft][SQL Server Native Client 11.0][SQL Server]The current transaction has aborted, and any pending changes have been rolled back. Cause: A transaction in a rollback-only state was not explicitly rolled back before a DDL, DML or SELECT statement. (111233) (SQLExecDirectW)')
谢谢您的帮助
万一有人遇到同样的问题。我能够找出问题所在。当您打开与 DSN 的连接时,自动提交设置为False。由于某种原因,这应该是True使代码能够工作(这很大程度上取决于我在 MSSQL 上所做的事情)。
import pyodbc
conn = pyodbc.connect(r'DSN=myDSN', autocommit=True)
cursor = conn.cursor()
query = r'{call myproc}'
cursor.execute(query)
这运行得很好!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)