我在使用pyodbc进行update操作时总是失败,没有报错
问题代码
import pyodbc
# 连接数据库
cnxn = pyodbc.connect(
'DRIVER={SQL Server};SERVER=IP地址;DATABASE=数据库名;UID=用户名;PWD=密码')
# 获取游标
updateCursor = cnxn.cursor()
updateCursor.execute(
"UPDATE JCXX SET JCXX.JCXM = NULL WHERE JCXX.ID =2010135042")
print(updateCursor.rowcount, 'products updated')
updateCursor.commit()
if not cnxn.autocommit:
cnxn.commit()
# 关闭
updateCursor.close()
cnxn.close()
本地开发环境
操作系统: windows 10 64-bit 企业版 LTSC 2019
python: Python 3.6.6rc1 (v3.6.6rc1:1015e38be4, Jun 12 2018, 07:51:23) [MSC v.1900 32 bit (Intel)] on win32
pyodbc: 4.0.30
现象描述
在执行这个 update 操作时,无论是使用游标的 commit 方法,还是使用连接的 commit 方法,都无法改变数据库中的数据。 print(updateCursor.rowcount) 的值为 1,表示确实有一行被更新。
debug 过程
在查阅了 stack overflow、百度、bing 等的搜索结果后比较迷惑,所有的地方都是告诉我要么使用 conn.commit() ,要么使用 cursor.commit() ,但是我用了以后怎么尝试都无法更新表中的数据,希望遇到类似问题的朋友可以指点一下。
关于 LearnKu
看了一下, 好像都OK, 确定没更新吗?
Before
After
我在自己的环境下连接的是局域网内的一台服务器,不知道为什么 update 无法 commit ,后来换用 pymssql 后一切正常。和你这边环境不同的是那台服务器是 sql server2008,不知道有没有可能是兼容性的问题。
感谢解答!