使用 python pymssql 调用 sql server 存储过程

Posted

技术标签:

【中文标题】使用 python pymssql 调用 sql server 存储过程【英文标题】:Calling sql server stored procedure using python pymssql 【发布时间】:2022-01-08 00:01:19 【问题描述】:

我正在使用 pymssql 从 python 执行 ms sql 存储过程。当我尝试执行存储过程时,它似乎没有被执行。代码在没有任何错误的情况下完成,但在验证后我可以看到该过程并未真正执行。令我困惑的是,像 select 和类似查询这样的常见查询正在起作用。这里可能缺少什么?我尝试了以下两种方法。存储过程没有任何参数或参数。

cursor.execute("""exec procedurename""")

cursor.callproc('procedurename',())

编辑:该过程加载一个包含一些最新数据的表。当我从本地执行 proc 时,它会使用最新数据加载表,但我可以看到使用 pymssql 从 python 完成时没有加载最新数据。

【问题讨论】:

根据Calling stored procedures 文档,callproc 是首选方式。 你说程序没有真正执行是什么意思?是否意味着插入新记录、更新或删除现有记录?请Edit您的问题提供更多信息。 过程是否返回多个结果集或消息? 对问题进行编辑以添加有关程序正在执行的操作的信息。该过程不返回任何结果集。 当从 Python 调用它时,您是在之后调用 Connection.commit(),还是将 Connection.autocommit 属性设置为 True 【参考方案1】:

感谢 AlwaysLearning 提供解决问题的关键线索,我在过程调用后添加了 connection.commit() 并开始工作!

【讨论】:

以上是关于使用 python pymssql 调用 sql server 存储过程的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 pymssql 获取 sql 打印消息

SQL Server 从 Java DriverManager.getConnection() 登录失败,从 Python 使用 pymssql.connect()

升级到 Python 3.6 和 SQL Server 2016 后出现 Pymssql 错误 20017

使用 pymssql 连接到 SQL Server 实例

使用 pymssql 将文本文件批量插入 SQL Server

pymssql(python 模块)无法使用临时表