数据迁徙是每个后端都会遇到的工作之一,本文介绍了一些常见的数据迁徙方法与工具

mysqldump:数据结构不变的数据迁徙

  1. 导出数据

    mysqldump -u root -p DATABASE_NAME table_name > dump.sql
  2. 恢复数据

    mysql -u root -p DATABESE_NAME < dump.sql

    或者连接mysql客户端

    mysql> source dump.sql

使用pymysql连接数据库

  1. 可以直接用用户名密码连接的数据库

    class GeneralConnector:     def __init__(self, config, return_dic=False):         self.return_dic = return_dic         self.config = config      def __enter__(self):         self.conn = pymysql.connect(**self.config, port=3306)         if self.return_dic:             # 一行数据会变成一个字典             self.cursor = self.conn.cursor(pymysql.cursors.DictCursor)         else:             self.cursor = self.conn.cursor()         return self.cursor      def __exit__(self, *args):         self.cursor.close()         self.conn.commit()         self.conn.close()

    使用:

    # local_db = { #     'user': 'root', #     'passwd': '', #     'host': '127.0.0.1', #     'db': 'local_db' #     } with GeneralConnector(const.local_db, return_dic=True) as cursor:     cursor.execute('SELECT `col1`, `col2` FROM test;')     return cursor.fetchall()
  2. 连接处于需要SSH连接的服务器的数据库

    class SSHConnector:     def __init__(self, server, config, return_dic=False):         self.return_dic=return_dic         self.server = server         self.config = config      def __enter__(self):         self.conn = pymysql.connect(**self.config, port=self.server.local_bind_port)         if self.return_dic:             # 一行数据会变成一个字典             self.cursor = self.conn.cursor(pymysql.cursors.DictCursor)         else:             self.cursor = self.conn.cursor()         return self.cursor      def __exit__(self, *args):         self.cursor.close()         self.conn.commit()         self.conn.close()

    使用: