這篇文章主要介紹了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)
新聞熱點
疑難解答