当前位置 主页 > 服务器问题 > win服务器问题汇总 >
这篇文章主要介绍了mysql数据迁徙方法工具解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
数据迁徙是每个后端都会遇到的工作之一,本文介绍了一些常见的数据迁徙方法与工具
mysqldump:数据结构不变的数据迁徙
导出数据
mysqldump -u root -p DATABASE_NAME table_name > dump.sql
恢复数据
mysql -u root -p DATABESE_NAME < dump.sql
或者连接mysql客户端
mysql> source dump.sql
使用pymysql连接数据库
可以直接用用户名密码连接的数据库
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()
连接处于需要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()
使用:
# SERVER = SSHTunnelForwarder( # (remote_host, ssh_port), # ssh_username=USERNAME, # ssh_pkey=SSH_KEY, # ssh_private_key_password=SSH_KEY_PASSWD, # remote_bind_address=('127.0.0.1', 3306) # mysql服务位置 # ) # server_db = { # 'user': 'root', # 'passwd': '', # 'host': '127.0.0.1', # 'db': 'server_db' # } # 创建一个隧道将服务端的mysql绑定到本地3306端口 with const.SERVER as server: with SSHConnector(server, const.server_db) as cursor: cursor.execute('show tables;') data = cursor.fetchall() print(data)
cursor的各种操作
1.cursor.execute(sql_statement)
执行一条sql语句
2.cursor.fetchall()
获取cursor的所有结果,常跟在select语句后使用
3.cursor.fetchone()
获取cursor的第一条结果
4.cursor.lastrowid
最后一条数据的id
5.cursor.executemany(insert_statement, data_list)