我有一个从Sql server运行时100%工作的存储过程。它更新至少5个不同的表。当我从Python运行它时,它只更新前两个表。在剩余的表格上没有完成。传递的参数与直接从sql server运行的参数完全相同。每次测试都会将数据重置为一个公共起点。有没有人用Python执行存储过程来遇到这个问题?我在不到一个月前使用Python 3.5和Pyodbc,在Windows上使用Sql 2012客户端和服务器。它不是提交问题,因为前两个表正在更新/提交。它失败的sql语句并不复杂。我猜测某种限制,如时间或只更新这么多表与给定的SQL调用?我的下一步是从Python执行每个步骤作为单独的步骤,而不是单独执行所有Stored Proc,看看我是否有任何差异,但我希望不必这样做。
str_rs_SqlCommand = "{call dbo.usp_LaborLogBatchPerson ('Test User', '1')}" ### Passes parameters to the stored procedure
print (str_rs_SqlCommand)
obj_dbc_Connection2 = pyodbc.connect("DRIVER={SQL Server} " + " ;SERVER=" + str_dbc_ServerName + " ;DATABASE=" + str_dbc_Name + " ;UID=" + str_dbc_Uid + " ;PWD=" + str_dbc_Pwd + "" + "" ) #;autocommit=True #tried with and without autocommit
conn = obj_dbc_Connection2.cursor() ### Create a cursor for the sql connection
conn.execute(str_rs_SqlCommand)
conn.commit()
obj_dbc_Connection2.close
答案 0 :(得分:0)
我通过逐步完成它正在做的事情来找到它。在存储过程中具有“打印语句”结束在该步骤处执行存储过程。如果在Winderz平台上使用Python 3.5和Pyodbc以及MSSql 2012,请确保不在存储过程中使用print语句......