#1 08.03.2018 16:29:31

alex2244
Mitglied

Von Python Skript eine Stored Procedure auf MariaDB aufrufen

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.

Offline

Schnellantwort auf dieses Thema

Schreibe deinen Beitrag und versende ihn
Deine Antwort

Fußzeile des Forums