Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak mogę zrzucić bazę danych MySQL bez użycia mysqldump w Pythonie?

Rozwiązałem ten problem.

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()

Wydaje się, że działa dobrze od małego testu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Inne podejście do używania klauzuli IN w MySql

  2. Czy mogę wprowadzić hasło raz dla wielu wywołań wiersza poleceń mysql, gdy zapytania nie są znane z góry?

  3. Jak auto-inkrementacja w podzbiorze tabeli MYSQL

  4. Żadne operacje nie są dozwolone po zamknięciu połączenia MYSQL

  5. Czy możemy połączyć zdalną bazę danych MySQL w systemie Android za pomocą JDBC?