10

テーブル構造を含むPythonを使用するだけで、mysqldumpを使用せずにMySQLデータベースをダンプするにはどうすればよいですか?

4

2 に答える 2

21

私はこの問題を解決しました。

import MySQLdb
import os
import datetime

con = MySQLdb.connect(host='localhost', user='root', passwd='password', db='test')
cur = con.cursor()

cur.execute("SHOW TABLES")
data = ""
tables = []
for table in cur.fetchall():
    tables.append(table[0])

for table in tables:
    data += "DROP TABLE IF EXISTS `" + str(table) + "`;"

    cur.execute("SHOW CREATE TABLE `" + str(table) + "`;")
    data += "\n" + str(cur.fetchone()[1]) + ";\n\n"

    cur.execute("SELECT * FROM `" + str(table) + "`;")
    for row in cur.fetchall():
        data += "INSERT INTO `" + str(table) + "` VALUES("
        first = True
        for field in row:
            if not first:
                data += ', '
            data += '"' + str(field) + '"'
            first = False


        data += ");\n"
    data += "\n\n"

now = datetime.datetime.now()
filename = str(os.getenv("HOME")) + "/backup_" + now.strftime("%Y-%m-%d_%H:%M") + ".sql"

FILE = open(filename,"w")
FILE.writelines(data)
FILE.close()

少しのテストからうまくいくようです。

于 2012-05-12T18:50:01.813 に答える
4

MySQLdbをお勧めします。これは、Python 用の MySQL API を提供します。

ただし、ほとんどの場合、API は を間接的に呼び出しますmysqldumpmysqldump直接電話したくないですか、それともまったく電話したくないですか?

また、MySQLdb を使用せずにテーブル構造とデータを (ページの下に) ダンプする正確な手順が示されているDump tables and dataも確認してください。

于 2012-05-10T12:58:11.933 に答える