2009-12-28 62 views
1

我正在使用pymssql来对SQL 2005数据库进行数据库调用。我想将参数传递给存储过程。我很难得到正确的语法。以下是我对调用不带参数的程序:Pymssql:使用参数调用存储过程

import _mssql 
connection = _mssql.connect(server='myserver', database='mydatabase', trusted=True) 
connection.execute_query('storedProcedureName') 

假设我想设置@Id参数为1。我该怎么做?以下几行不起作用。关于这些参数的结构如何,文档还不清楚。

connection.execute_query('storedProcedureName', {'@Id':'1'}) 
connection.execute_query('storedProcedureName', '@Id=1') 
connection.execute_query('storedProcedureName', ('@Id', '1')) 

回答

3

我找到了正确的语法来做到这一点:

connection.execute_query('exec storedProcedureName @Id=1') 
+2

要小心保护自己免受SQL注入。我不是在一个地方测试,但它看起来像你想要的东西像connection.execute_query('exec storedProcedureName @ Id =%d',(1,)) – 2009-12-28 23:45:11

+0

感谢您的提示。我想尽可能简化我的例子。 – Jeremy 2009-12-29 03:12:49

2

对于使用的pymssql较新版本的人,你可以调用与参数的过程是这样的:cursor.callproc('storedProcedureName', (1,))

当第二个参数是所有需要的参数的元组。

相关问题