Ich habe eine .sql-Datei mit einer Reihe von SQL-Abfragen, wobei jede Abfrage über mehrere Zeilen geht. Ich möchte diese Abfragen in MySQL über Python mit MySQLdb
ausführen.
sqlite3
hat für diesen Zweck eine "nicht standardmäßige Abkürzung" namens executescript()
, aber es scheint keine entsprechende Funktion in MySQLdb
zu geben.
Ich habe diese alte Frage von vor 2 Jahren bemerkt, die dasselbe fragt, aber ich fand die Antworten unbefriedigend. Die Antworten besagen im Grunde genommen:
Verwenden Sie
subprocess
, um denmysql
-Befehl auszuführen und ihm Ihre .sql-Datei zu senden.
Dies funktioniert, ist aber ziemlich unelegant und führt unerwünschte Komplexität bzgl. Fehlerbehandlung und dergleichen ein.
Wenn jede Abfrage auf einer einzelnen Zeile steht, führen Sie einfach jede Zeile separat aus.
In meinem Fall erstrecken sie sich jedoch über mehrere Zeilen, daher funktioniert dies nicht.
Wenn jede Abfrage nicht auf einer einzelnen Zeile steht, fügen Sie sie irgendwie zusammen.
Aber wie? Ich meine, ich kann etwas schnell zusammenbasteln, sodass keine Antwort mit halbgaren Antworten notwendig ist, und vielleicht werde ich das am Ende tun, aber gibt es bereits eine etablierte Bibliothek, die dies macht? Ich würde mich mit einer umfassenden und korrekten Lösung wohler fühlen als mit einem Hack.