使用Python3.4执行SQL Server存储过程时遇到问题。我正在导入Pyodbc来创建连接,并有几行代码应该发送数据到存储过程。
我的Python:
sql = "exec <stored_procedure_name> @int1=?, @int2=?, @string1=?, @int3=?"
params = (irow[0], irow[15], irow[2], irow[6])
cursor.execute(sql, params)
存储过程:
@int1 int,
@int2 int,
@string1 varchar(10),
@int3 int
AS
BEGIN
--Do stuff
END
在执行脚本时,命令提示符中不会出现错误。当我打印时
print(sql, params)
我得到一个奇怪的结果。不会将任何内容插入存储过程中的目标表中。
exec <stored_procedure_name> @int1=?, @int2=?, @string1=?, @int3=? (0, 0, 'string', 0)
我对Python还不熟悉,所以任何洞察都会非常感谢。我所看到的一切都没有帮助。
我发现问题是由于没有打开自动提交。默认情况下,Pyodbc的autocommit设置为False。
要启用自动提交,可以声明连接,如下所示:
我认为缺少的是承诺。对光标运行commit方法:
或者在创建连接时设置
autocommit=True
,就像在提供的其他答案中一样。该连接用于创建游标,因此当调用execute()
时,自动提交行为是它固有的:参数通常作为元组传递,因此
应该有用
相关问题 更多 >
编程相关推荐