2009-12-28 4 views
1

J'utilise pymssql pour effectuer des appels de base de données à une base de données SQL 2005. Je veux passer des paramètres à une procédure stockée. J'ai du mal à obtenir la syntaxe correcte pour cela. Voici ce que j'ai pour appeler une procédure sans paramètre:Pymssql: procédure stockée appelant avec paramètres

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

Supposons que je voulais régler le paramètre @Id à 1. Comment puis-je faire? Les lignes suivantes ne fonctionnent pas. Les docs ne sont pas claires quant à la façon dont les params sont structurés.

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

Répondre

3

Je trouve la syntaxe correcte pour ce faire:

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

Faites très attention de vous protéger des injections SQL. Je ne suis pas dans un endroit pour tester, mais il semble que ce que vous voulez est quelque chose comme connection.execute_query ('exec storedProcedureName @ Id =% d', (1,)) –

+0

Merci pour le conseil. Je voulais rendre mon exemple aussi simple que possible. – Jeremy

2

Pour toute personne qui utilise une version plus récente de pymssql, vous pouvez appeler des procédures avec des paramètres comme ceci: cursor.callproc('storedProcedureName', (1,))

Lorsque le second paramètre est un tuple de tous les paramètres requis.

Questions connexes