Seite 1 von 1
mySQL einen dump erzeugen, wie?
Verfasst: Samstag 23. Juli 2005, 05:57
von jens
Kann man überhaupt mit mySQLdb einen dump aller Daten erzeugen? Ich meine natürlich per CGI...
In PHP gibt's eine Lösung:
http://www.hosteurope.de/faq/index.php?cpid=11019
Verfasst: Samstag 23. Juli 2005, 07:11
von jens
Ha!
Code: Alles auswählen
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import cgitb;cgitb.enable()
import os,sys,cgi
try:
import subprocess
except:
from PyLucid_python_backports import subprocess
class sql_dump:
def __init__( self, dbconf ):
self.dbconf = dbconf
# Daten zum Downloaden?
self.download = True
#~ self.download = False
command = "/usr/bin/mysqldump -u%(u)s -p%(p)s -h%(h)s %(n)s | /bin/gzip" % {
#~ command = "/usr/bin/mysqldump -u%(u)s -p%(p)s -h%(h)s %(n)s" % {
"u" : dbconf["dbUserName"],
"p" : dbconf["dbPassword"],
"h" : dbconf["dbHost"],
"n" : dbconf["dbDatabaseName"],
}
self.dump( command )
def error( self, *txt ):
print "Content-type: text/html; charset=utf-8\r\n\r\n"
print "<h1>SQL dump Fehler:</h1>"
print "<br/>".join( [cgi.escape(str(i)) for i in txt] )
sys.exit()
def dump( self, command ):
try:
process = subprocess.Popen( command,
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE
)
except Exception,e:
self.error( "subprocess Fehler:", e )
#~ stderr = process.stderr.read()
#~ if stderr != "":
#~ self.error( "command error:", stderr )
if self.download == False:
print "Content-type: text/html; charset=utf-8\r\n\r\n"
print "<h1>TEST:</h1>"
print process.stdout.read(1024)
sys.exit()
print 'Content-Disposition: attachment; filename=%s.gz' % self.dbconf["dbDatabaseName"]
print 'Content-Transfer-Encoding: binary'
print 'Content-Type: application/octet-stream; charset=utf-8\n'
sys.stdout.write( process.stdout.read() )
if __name__ == "__main__":
dbconf = {
"dbUserName" : "SQL-DB-Username",
"dbPassword" : "SQL-DB-Password",
"dbHost" : "localhost",
"dbDatabaseName" : "SQL-DB-Name"
}
sql_dump( dbconf )
Komischerweise geht die "stderr" Abfrage nicht auf Hosteurope. Lokal bei mit geht's, obwohl da auch eine Fehler kommt... Kann man stderr nur abfragen, wenn auch ein Fehler passiert ist?
Verfasst: Samstag 23. Juli 2005, 12:55
von Leonidas
Wie wärs wenn du in der MySQLdb Mailingliste nachfragst? Dort gibt es sicher wesentlich mehr Leute die sich damit beschäftigen.