使用pyodbc调用SQL Server(Synapse)存储过程无报错但未插入数据
问题排查与解决:PyODBC调用Synapse存储过程无插入记录
核心问题修正
你的代码存在两处关键错误,导致存储过程未正确执行插入操作:
- 存储过程调用语法错误:SQL Server(含Synapse)中调用存储过程时,参数不需要包裹括号,原代码里的
EXEC my_sp (?,?,?)是错误写法,正确格式应为EXEC my_sp ?, ?, ?。 - 参数传递格式错误:
cur.execute(sql,(values))中,values本身已是元组,额外包裹括号会形成嵌套元组,导致参数无法正确绑定,应直接传递values。
修正后的代码:
sql = "EXEC my_sp ?, ?, ?" values = (str(v1), str(v2), int(v3)) cur.execute(sql, values) conn.commit()
额外排查方向
如果修正后仍未解决,可检查以下点:
- 确认PyODBC连接的数据库实例、库名与SSMS中使用的完全一致,避免连接到错误环境。
- 验证
v1、v2、v3的实际值是否符合存储过程参数及目标表的约束(如字段长度、数据范围),部分情况下不符合约束会导致静默插入失败。 - 在存储过程中添加日志逻辑(比如插入参数信息到日志表),确认存储过程是否被正常调用,以及参数是否正确传入。
内容的提问来源于stack exchange,提问作者pythondumb
相关产品推荐
相关产品推荐

