Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pyODBC插入失败_Python_Sql Server_Pyodbc - Fatal编程技术网

Python pyODBC插入失败

Python pyODBC插入失败,python,sql-server,pyodbc,Python,Sql Server,Pyodbc,我在Windows7上使用Python3.4(ActiveState)和pyodbc 3.0.7连接到WindowsNT6.1上运行的SQLServer2008RC2数据库 我遇到的问题是,下面的代码以静默方式失败。未对数据库进行任何更改 connection = pyodbc.connect("DRIVER={SQL Server};SERVER=(local);DATABASE=Kerb;UID=sa;PWD=password", autocommit=True) cursor = conn

我在Windows7上使用Python3.4(ActiveState)和pyodbc 3.0.7连接到WindowsNT6.1上运行的SQLServer2008RC2数据库

我遇到的问题是,下面的代码以静默方式失败。未对数据库进行任何更改

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似乎无法在不使用超时的情况下执行insert语句。我已经开始使用PyMSSQL,成功提交不再需要超时。

能否将实际的INSERT语句包含在您正在使用的列定义中?连接字符串(以及您正在使用的驱动程序和操作系统)也会很有帮助。例如,如果您使用的是Linux,那么无论您使用的是FreeTDS驱动程序还是MS ODBC for RedHat驱动程序,都会产生相当大的差异。谢谢。@FlipperPA,当然。我已经添加了更多关于我正在使用的软件以及我正在尝试执行的插入的详细信息。如果你认为还有什么可以帮助别人认识到这个问题,请告诉我。啊哈!Python3.4.x下的3.0.7 pyodbc驱动程序出现问题。有两件事需要尝试:(1)尝试使用新的3.0.10 pyodbc驱动程序:
pip卸载pyodbc&&pip安装pyodbc==3.0.10
或(2)尝试使用Python 3.3.x。我推荐(1),它适合我在3.4.x上使用(我正在用3.4和pyodbc 3.0.10构建一个新的vagrant映像,以取代开发者现在使用的3.3/3.0.7映像)。让我知道它是否有效,我会让这成为一个“官方答案”。我在pyodbc 3.0.10上没有任何运气。仍然需要一个time.sleep(1)来正确执行查询。我将淘汰Python3.4并安装3.3。我会回来报到的。谢谢你的建议。@FlipperPA在3.3或2.7上没有任何运气。