pyODBC插入静默失败



我在Windows 7上使用python 3.4 (ActiveState)和pyodbc 3.0.7连接到运行在Windows NT 6.1上的SQL Server 2008 RC2数据库。

我遇到的问题是下面的代码默默地失败了。没有对数据库进行任何更改。

connection = pyodbc.connect("DRIVER={SQL Server};SERVER=(local);DATABASE=Kerb;UID=sa;PWD=password", autocommit=True)
cursor = connection.cursor()
cursor.execute('''INSERT INTO [My].[Sample] (Case) VALUES (1);''')

我还尝试用commit语句强制插入(除非我错了,由于autocommit=True,这应该是不必要的),这也失败了,没有输出。

cursor.execute('''INSERT INTO [My].[Sample] (Case) VALUES (1);''')
cursor.commit()

所以到目前为止我的解决方案是添加一个睡眠,这已经解决了问题。但是我担心在生产中实现这个解决方案,因为它没有考虑到网络延迟等。

cursor.execute('''INSERT INTO [My].[Sample] (Case) VALUES (1);''')
time.sleep(1)

我相信我的问题可能与:pyODBC和SQL Server 2008和Python 3

如果有人对进一步调试有任何想法,或者有关于这一点异步行为的文档,我很乐意听到。

谢谢!

不幸的是,PyODBC似乎不能在不使用超时的情况下执行插入语句。我已经开始使用PyMSSQL,并且成功提交不再需要超时。

最新更新