繁体   English   中英

SQL 服务器:从 python 调用时存储过程不起作用

[英]SQL Server: stored procedure not working when called from python

我有一个名为Points的简单表,其中包含两列QuestionIDUserID

QuestionID  UserID
-------------------
5            2
6            1

我写了一个存储过程来将数据插入到这个表中:

CREATE PROCEDURE [dbo].[SetPoints] 
     @QuestionID INT, 
     @UserID INT 
AS
     INSERT INTO dbo.Points (QuestionID, UserID)
     VALUES (@QuestionID, @UserID)

我执行了这个程序,它似乎工作正常。

然后我写了 Python 代码来连接这个数据库并执行这个过程。

import pyodbc as po
    
# Connection variables
server = '################'
database = '#############'
username = '#############'
password = '################'
    
# Connection string
cnxn = po.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER=' +
            server+';DATABASE='+database+';UID='+username+';PWD=' + password)
cursor = cnxn.cursor()

# Prepare the stored procedure execution script and parameter values
storedProc = "EXEC SetPoints @QuestionID = ?, @UserID = ?"
params = (2, 3)
    
# Execute stored procedure with parameters
cursor.execute(storedProc, params)

# Close the cursor and delete it
cursor.close()
del cursor
    
# Close the database connection
cnxn.close()

当我运行Execute Python 代码时没有显示错误,但是如果我检查Points表,则没有插入任何内容....

有人可以告诉我发生了什么事吗? 该过程在 SSMS 中运行良好,但是当我从 Python 执行它时,没有任何反应。

解决方案:解决方案是将auto_commit=True添加到pyodbc.connect() function。 我从本网站的另一篇文章中找到了答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM