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!
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%Tags und Links python mysql stored-procedures