stored procedure mit updates macht nichts?
Verfasst: Donnerstag 8. Juni 2017, 22:53
Hallo Leute,
ich habe da mal wieder ein Problem.
Ich habe für mein Python-Projekt ein Stored Procedure in meiner MySQL-DB eingerichtet.
Dieses Prozedur beinhaltet viele hochkomplexe Update-Befehle und dauert auch ein paar Sekunden bis die abgearbeitet werden (~20 s).
Mein Problem ist nun wie folgt:
Diese Stored-Procedure verrichtet sein Dienst tadellos in der MySQL-Worbench (eine MySQL-GUI). Ich überprüfe die Resultate nach dem Ablauf und tatsächlich wurde alles gemacht was gemacht werden sollte.
So, nun möchte ich diese Stored-Procedure aus meinem Python-Programm aufrufen.
Zuerst habe ich mit Permission denied herumgekämpft. Kurz recherchiert, Berechtigungen auf den User vergeben der bemängelt wurde (als Error-Meldung in der Konsole und dieser ist es natürlich auch mit dem ich das Programm an der DB anmelde) und danach waren keine Fehler mehr vorhanden.
Er wartet auch ca. 20s bis diese Stored-Procedure abgearbeitet wurde und beendet das Programm dann tadellos.
Bei der Prüfung der Daten stellt sich aber heraus das gar nichts gemacht worden ist!
Wie gesagt: an der Procedure kann es nicht liegen denn wenn ich diese in der DB-Oberfläche aufrufe (call MyProcedure();) dann funktioniert es auch.
Hier wie ich die Procedure aus Python aufrufe (habe ich so bei 'stackoverflow' gefunden):
objDB.cursor.callproc('MyProcedure')
objDB.cursor.execute("SELECT @MyProcedure;")
So, ich vermute mal daß ich a) nicht beide so aufrufen muss und das alleine 'callproc' ausreichen müsste und b) das in einem der beiden, wen nicht gar in beiden, falsch angehe.
'objDB' instanziere ich zuvor und lasse diese per Konstruktor mit der DB verbinden. In meinen hunderten anderen SQL-Statements (Selects, Inserts & Updates) funktioniert diese vorgehensweise auch bei der gleichen Klasse.
Ich habe es mit und ohen 'commit' probiert (weil ich nicht sicher bin ob commit bei einer Stored Procedure von Nöten ist oder nicht (oder es sogar stört).
So, kann mir einer hier helfen und erklären was man bei stored procedures genau beachten muss damit es funktioniert?
Ich bedanke mich schon einmal im Voraus für eure Hilfe!
ich habe da mal wieder ein Problem.
Ich habe für mein Python-Projekt ein Stored Procedure in meiner MySQL-DB eingerichtet.
Dieses Prozedur beinhaltet viele hochkomplexe Update-Befehle und dauert auch ein paar Sekunden bis die abgearbeitet werden (~20 s).
Mein Problem ist nun wie folgt:
Diese Stored-Procedure verrichtet sein Dienst tadellos in der MySQL-Worbench (eine MySQL-GUI). Ich überprüfe die Resultate nach dem Ablauf und tatsächlich wurde alles gemacht was gemacht werden sollte.
So, nun möchte ich diese Stored-Procedure aus meinem Python-Programm aufrufen.
Zuerst habe ich mit Permission denied herumgekämpft. Kurz recherchiert, Berechtigungen auf den User vergeben der bemängelt wurde (als Error-Meldung in der Konsole und dieser ist es natürlich auch mit dem ich das Programm an der DB anmelde) und danach waren keine Fehler mehr vorhanden.
Er wartet auch ca. 20s bis diese Stored-Procedure abgearbeitet wurde und beendet das Programm dann tadellos.
Bei der Prüfung der Daten stellt sich aber heraus das gar nichts gemacht worden ist!
Wie gesagt: an der Procedure kann es nicht liegen denn wenn ich diese in der DB-Oberfläche aufrufe (call MyProcedure();) dann funktioniert es auch.
Hier wie ich die Procedure aus Python aufrufe (habe ich so bei 'stackoverflow' gefunden):
objDB.cursor.callproc('MyProcedure')
objDB.cursor.execute("SELECT @MyProcedure;")
So, ich vermute mal daß ich a) nicht beide so aufrufen muss und das alleine 'callproc' ausreichen müsste und b) das in einem der beiden, wen nicht gar in beiden, falsch angehe.
'objDB' instanziere ich zuvor und lasse diese per Konstruktor mit der DB verbinden. In meinen hunderten anderen SQL-Statements (Selects, Inserts & Updates) funktioniert diese vorgehensweise auch bei der gleichen Klasse.
Ich habe es mit und ohen 'commit' probiert (weil ich nicht sicher bin ob commit bei einer Stored Procedure von Nöten ist oder nicht (oder es sogar stört).
So, kann mir einer hier helfen und erklären was man bei stored procedures genau beachten muss damit es funktioniert?
Ich bedanke mich schon einmal im Voraus für eure Hilfe!