Hallo zusammen,
Ich möchte gerne generierte Dumps aus phpMyAdmin mit Python3 in eine andere MySQL Datenbank importieren.
Könnt ihr mir sagen, was die beste und kompatible Weg ist?
Vielen Dank.
Importieren von phpMyAdmin Dumps
- noisefloor
- User
- Beiträge: 3875
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
warum willst du den Weg via Python gehen? Du kannst den Dump doch direkt über die Kommandozeile machen, siehe Link.
Wenn dir danach ist kannst du das aus Python heraus auch über eine Aufruf `subprocess` Moduls verpacken, macht aber eher wenig Sinn.
Gruß, noisefloor
warum willst du den Weg via Python gehen? Du kannst den Dump doch direkt über die Kommandozeile machen, siehe Link.
Wenn dir danach ist kannst du das aus Python heraus auch über eine Aufruf `subprocess` Moduls verpacken, macht aber eher wenig Sinn.
Gruß, noisefloor
- DeaD_EyE
- User
- Beiträge: 1030
- Registriert: Sonntag 19. September 2010, 13:45
- Wohnort: Hagen
- Kontaktdaten:
Das kann man eigentlich außerhalb von Python machen. Du brauchst nur mysqldump zum Sichern und mysql um den Dump zurück zu spielen.
Könnte man mit subprocess aufrufen:
Die Konstruktionen mit Popen sind aber ziemlich wackelig. Wenn man nicht genau weiß was man macht und wo es überall knallt, hat man ziemlich schnell Datenmüll in der Datenbank oder im Dump.
Könnte man mit subprocess aufrufen:
Code: Alles auswählen
import subprocess
def dump(database, username, password, outputfile):
cmd = ["mysqldump", f"-user={username}", f"-password={password}", "-q", database]
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE)
with open(outputfile, "wb") as file:
while chunk := proc.stdout.read(1024):
file.write(chunk)
def restore(database, username, password, dump):
cmd = ["mysql", f"-user={username}", f"-password={password}", database]
proc = subprocess.Popen(cmd, stdin=subprocess.PIPE)
with open(dump, "rb") as file:
for line in file:
proc.stdin.write(line)
Die Konstruktionen mit Popen sind aber ziemlich wackelig. Wenn man nicht genau weiß was man macht und wo es überall knallt, hat man ziemlich schnell Datenmüll in der Datenbank oder im Dump.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
@DeaD_EyE: Warum willst Du unbedingt die Daten über PIPEs schaufeln?
Code: Alles auswählen
import subprocess
def dump(database, username, password, outputfile):
cmd = ["mysqldump", f"-user={username}", f"-password={password}", "-q", database]
with open(outputfile, "wb") as file:
subprocess.run(cmd, stdout=file)
def restore(database, username, password, dumpfile):
cmd = ["mysql", f"-user={username}", f"-password={password}", database]
with open(dump, "rb") as file:
subprocess.run(cmd, stdin=file)