Python 3.6 pyodbc to SQL Wie man SP ausführt

Ich habe ein Python-Skript erstellt, um ein SP mit meinem Cursor mit der Verbindung odbc auszuführen. Ich habe alles versucht, was ich gefunden habe, aber ich kann das gewünschte Verfahren nicht ausführen. Mein Code unten:

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() 

Ich habe versucht:

 cmd_prod_executesp = '{call DC_SAS_EvaluationUpdate}' cmd_prod_executesp = 'exec DC_SAS_EvaluationUpdate' cmd_prod_executesp = '{CALL DC_SAS_EvaluationUpdate}' 

Ich schätze Ihre Hilfe

vielen Dank

Vielen Dank für Ihre Kommentare. Schließlich, in einem schnellen Kommentar von @GordThompson habe ich die Änderungen unten angewendet und das funktionierte.

pyodbc importieren

 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() 

Hier sind zwei Beispiele, die für mich arbeiten. Ich werde mit Parametern zeigen, denn ich vermute, du musst wissen, wie man das auch macht.

Mit benannten parametern:

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

Mit Positionsparametern:

 cursor.execute('EXEC usp_get_user_data ?, ?', None, 'flipperpa') 

Viel Glück!

Ich denke, Ihr Code sieht gut aus, wie Sie der Richtlinie von pyodbc

 //SQL server format cursor.execute("exec sp_dosomething(123, 'abc')") //ODBC format cursor.execute("{call sp_dosomething(123, 'abc')}") 

Von deinem Kommentar hast du gesagt, du siehst die Nachricht

`process beendet mit Exit-Code 0 '

Das bedeutet, dass alles ok gearbeitet hat. Wenn irgendeine exception / ein Fehler in deinem Programm passiert ist, sollte dein Programm einen Exit-Code mit Nicht-Null-Argument generieren.

Also ich denke dein Programm hat gut geklappt und die SP wurde hingerichtet. Allerdings vermute ich, dass Sie nicht sehen, dass die Änderungen in Ihrer DB wirksam werden, weil Sie Ihre Änderungen nicht commit() nachdem Sie Ihr sp ausführen und bevor Sie Ihre Verbindung zu Ihrem DB schließen.

so füge conn.commit() so hinzu:

 cursor.execute(cmd_prod_executesp) conn.commit() 

EDIT: Versuche, den neueren Treiber auch für MsSQL zu verwenden

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