Hallo zusammen, ich habe eine kurze Frage.
Ich habe einen MariaDB Server installiert. Funktioniert auch. Nun möchte ich mit einem Python Skript eine Stored Procedure aufrufen.
Mit dem Python Skript Insert und Select Befehle funktionieren.
Nur mit einer Procedure aufrufen mit
cursor.execute("call meine_procedure()")
gibt es folgende Fehlermeldung:
Traceback (most recent call last):
File "test2.py", line 19, in <module>
cursor.execute("call alleuseranzeigen()")
File "/usr/lib/python2.7/dist-packages/mysql/connector/cursor.py", line 563, in execute
"Use multi=True when executing multiple statements")
mysql.connector.errors.InterfaceError: Use multi=True when executing multiple statements
Mit dem Befehl (im Python Skript)
cursor.callproc('alleuseranzeigen')
scheint es zwar zu funktionieren aber ich weis nicht wie ich die ausgabe (in der Procedure steckt ein einfacher "select * from"-Befehl) auf der Konsole anzeige.
Ich habe was von cursor.fetchone() und cursor.fetchcall gelesen aber bei jedem bekomme ich Fehlermeldungen
Traceback (most recent call last):
File "test2.py", line 19, in <module>
cursor.execute("call alleuseranzeigen")
File "/usr/lib/python2.7/dist-packages/mysql/connector/cursor.py", line 563, in execute
"Use multi=True when executing multiple statements")
mysql.connector.errors.InterfaceError: Use multi=True when executing multiple statements
Hier ist mal mein Testskript:
#!/usr/bin/python
import mysql.connector as mariadb
mariadb_connection = mariadb.connect(host='localhost', user='root', password='', database='homatic')
cursor = mariadb_connection.cursor()
# cursor.execute(sql, multi=True) - Er findet die Variable "sql" nicht
#geht
# cursor.execute("select * from users")
# for id, username, passwort, rfid_id in cursor:
# print(id,username, passwort, rfid_id)
#geht
# cursor.callproc('alleuseranzeigen') - geht aber keine ausgabe
# cursor.execute("call alleuseranzeigen") - geht nicht
# geht nicht
# results=cursor.fetchone()
# results=cursor.fetchchall()
# print results[0]
# geht nicht
Ich hoffe ihr könnt mein Testskript einigermaßen nachvollziehen und könnt mir helfen
die Procedure aufzurufen und entsprechende ausgabe auf der Konsole zu bekommen.