0

Ich habe Probleme mit MySQL Connector/Python, um gespeicherte Prozeduren mit Namen aufzurufen, die von Backticks umgeben sind. Ich erhalte die folgenden Syntaxfehler, wenn dies mit der cursor.callproc() Methode tun:Aufruf von gespeicherten MySQL-Prozeduren mit Backticked-Namen mit Connector/Python

mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in 
your SQL syntax; check the manual that corresponds to your MySQL server version 
for the right syntax to use near '`insert_page`_args1=NULL' at line 1

Hier ist mein Aufruf der gespeicherten Prozedur, die den Fehler verursacht:

args = (None, 'foo', 'bar') 
cursor.callproc('`sp_insert_page`', args) 

ich verschiedene Beispiele gesehen habe die Verwendung des Cursors zeigen, mit erweiterter String-Formatierung, um Strings zu vermeiden, die eine falsche MySQL-Syntax auswerten würden, aber das scheint nicht auf die Methode callproc() anwendbar zu sein; Ungeachtet des Formatierungsansatzes erhalte ich den obigen Syntaxfehler.

Der Aufruf gespeicherter Prozeduren, deren Namen Backticks aus dem MySQL-Befehlszeilenclient enthalten, funktioniert einwandfrei. Daher muss das Problem irgendwo in der Python-Anwendung liegen.

Ich hoffe jemand ist in der Lage, etwas Licht auf das Problem zu werfen.

+0

Sie können [this] (https://stackoverflow.com/a/48662431/8584198) Klasse verwenden. Ich habe eine Antwort darauf erhalten. –

Antwort

1

Johan de Meersman auf der MySQL-Mailingliste wies darauf hin, dass der Backtick ein MySQL-Delimiter ist und nicht wirklich Teil des Namens, daher sollten sie nicht im Aufruf enthalten sein.

Ich hätte schwören können, ich habe versucht, die Prozedur ohne Backticks aufrufen, aber es stellt sich heraus, dass der Fehler war.