Ergebnisse von gespeicherten Prozeduren mit Python-Cursor können nicht zurückgegeben werden

8

Aus irgendeinem seltsamen Grund kann ich in einer Python-Test-App keine Ergebnisse von einem Callproc-Aufruf erhalten. Die gespeicherte Prozedur in MqSQL 5.2.47 sieht folgendermaßen aus:

%Vor%

Wenn ich jetzt PyCharm mit Python 3.3 benutze, kann ich beim Aufruf dieser gespeicherten Prozedur scheinbar nichts abrufen. Dieser Code bringt mir die gewünschten Ergebnisse:

%Vor%

Aber dieser Code mit entweder cursor.fetchall () oder cursor.fetchone () ...

%Vor%

... liefert "mysql.connector.errors.InterfaceError: Kein Ergebnis, von dem abgerufen werden soll." Es gibt ein zusätzliches merkwürdiges Verhalten mit der cursor.execute () -Methode wie folgt ...

%Vor%

... weil es "mysql.connector.errors.InterfaceError ergibt: Verwenden Sie cmd_query_iter für Anweisungen mit mehreren Abfragen", gefolgt von "mysql.connector.errors.InterfaceError: Verwenden Sie multi = True, wenn Sie mehrere Anweisungen ausführen", obwohl dies der Fall ist Ich gebe nur ein Abfrageergebnis statt mehrerer Ergebnismengen zurück. Ist der MySQL Python-Connector, der den Ausführungsaufruf für die gespeicherte Prozedur behandelt, eine doppelte Abfrage? Wie kann ich einfach die gespeicherte Prozedur aufrufen und meine Ergebnisse zurückbekommen? Ich möchte wirklich keinen dynamischen SQL in meinem Code. Danke für Ratschläge!

    
gfish3000 10.03.2013, 08:14
quelle

2 Antworten

11

Haben Sie versucht, eines der Resultsets auszuwählen?

%Vor%

Es könnte sein, dass es für mehrere Resultsets reserviert, obwohl Sie nur ein SELECT stmt haben. Ich weiß, in PHP MySQL gespeicherten Prozeduren dies tun, um für INOUT und OUT Variable zurückgibt (was wiederum, haben Sie keine, aber vielleicht ist es sowieso zuweisen).

Der vollständige Code, den ich benutze (was funktioniert) ist:

%Vor%     
fuzic 10.03.2013, 08:36
quelle
0

Warum versuchen Sie es nicht so

? %Vor%     
Travis G 10.03.2013 08:22
quelle

Tags und Links