python3.6 pyodbc to SQL如何执行SP

2024-10-01 11:20:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经创建了一个Python脚本,用我的光标和odbc连接来执行SP。我已经试了所有我发现的,但我不能执行所需的程序。我的代码如下:

import pyodbc
conn = pyodbc.connect( 'DRIVER={SQL Server};'
                           'SERVER=XXXXXX;'
                           'DATABASE=XXX;UID=XXXX;'
                           'PWD=XXX')
cursor = conn.cursor()
cmd_prod_executesp = 'EXECUTE DC_SAS_EvaluationUpdate'
cursor.execute(cmd_prod_executesp)
conn.close()

我试过:

^{pr2}$

谢谢你的帮助

非常感谢


Tags: 代码import程序脚本cmdconnectprodconn
3条回答

非常感谢大家的评论。最后,在@GordThompson的一个快速评论中,我应用了下面的更改,并且成功了。在

导入pyodbc

conn = pyodbc.connect( 'DRIVER={SQL Server};'
                       'SERVER=XXXX;'
                       'DATABASE=XX;UID=XXXX;'
                       'PWD=XXXX')
cursor = conn.cursor()

cmd_prod_executesp = """EXEC DC_SAS_EvaluationUpdate """
conn.autocommit = True
cursor.execute(cmd_prod_executesp)

conn.close()

这里有两个对我有用的例子。我将用参数来演示,因为我猜你也需要知道怎么做。在

使用命名参数:

cursor.execute('EXEC usp_get_user_data @name = ?, @username = ?', 'tim', 'flipperpa')

使用位置参数:

^{pr2}$

祝你好运!在

我认为您的代码看起来很好,因为您遵循了pyodbc中的指导原则

//SQL Server format

cursor.execute("exec sp_dosomething(123, 'abc')")

//ODBC format

cursor.execute("{call sp_dosomething(123, 'abc')}")

从你的评论中你说你看到了这个信息

`Process finished with exit code 0'

这意味着一切都成功了好吧。如果程序中发生的任何异常/错误您的程序都应该生成一个带有非零参数的退出代码。在

所以我觉得你的程序运行得很好,而且SP确实被执行了。但是,我怀疑您没有看到更改在您的数据库中生效,这可能是因为您在执行sp之后和关闭与DB的连接之前没有commit()您的更改。在

所以添加conn.commit()如下:

^{pr2}$

编辑: 请尝试使用MsSQL的更新驱动程序

 conn = pyodbc.connect(driver = '{SQL Server Native Client 10.0}', server = 'xxxxxx',database = 'xxxx', uid = 'xx', pwd = 'xxxx')

相关问题 更多 >