使用 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 存储过程的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server 从 Java DriverManager.getConnection() 登录失败,从 Python 使用 pymssql.connect()
升级到 Python 3.6 和 SQL Server 2016 后出现 Pymssql 错误 20017