如何使用python转移mysql数据库中的全部数据
今天有人告诉我“马上就要双十一了我遇到了一个问题。”我很好奇“是什么问题呢关于双十一的商品折扣吗”他说“不是我之前双十一的时候购买的mysql数据库到期了但是因为价格较高我不打算继续续费了现在希望将其中的数据转移出去该怎么做呢“确实虽然专业的数据库服务非常好但是价格上还是比较贵的每年可能需要花费数百元如果需求量不大要求不高的情况下可能确实不如自己安装一个比较节省。那么将数据库中的数据全部迁移出来通常不是什么困难尤其是在数据量并非巨大的情况下下面就介绍几种方法可以有效的帮助数据的保存与转移。常规保存mysqldump使用mysqldump工具可以将数据库导出为sql文件mysqldump -u 用户名 -p -B 数据库名 导出文件.sql# 可选选项--set-gtid-purgedOFF 避免备份无关的全局事务标识符# 可选选项--single-transaction 保证数据一致性mysqldump -uroot -p --set-gtid-purgedOFF --single-transaction -B 数据库名 导出文件.sql在需要恢复的地方执行mysql -u 用户名 -p 导出文件.sql注意如果使用mysqldump导出大量数据会耗时较长因此更适合对中小规模的数据库使用。将表数据写入文件查询某表的所有数据并将其写入到文件中mysql -u 用户名 -p -e SELECT * FROM 数据库名.表名 文件名.txt使用python保存python直接转存对于mysql数据库可以使用pymysql查询出其中的所有数据然后插入到目标数据库。1234567891011121314151617181920212223242526272829303132333435363738394041424344454647importpymysql# 连接源数据库source_connpymysql.connect(host源数据库地址,user用户名,password密码,database源数据库名)source_cursorsource_conn.cursor()# 连接目标数据库target_connpymysql.connect(host目标数据库地址,user用户名,password密码,database目标数据库名)target_cursortarget_conn.cursor()# 查询源数据库中的所有表source_cursor.execute(SHOW TABLES)tablessource_cursor.fetchall()fortableintables:table_nametable[0]source_cursor.execute(fSELECT * FROM {table_name})rowssource_cursor.fetchall()source_cursor.execute(fSHOW CREATE TABLE {table_name})create_table_sqlsource_cursor.fetchone()[1]target_cursor.execute(fDROP TABLE IF EXISTS {table_name})target_cursor.execute(create_table_sql)forrowinrows:placeholders, .join([%s]*len(row))insert_sqlfINSERT INTO {table_name} VALUES ({placeholders})target_cursor.execute(insert_sql, row)target_conn.commit()source_cursor.close()source_conn.close()target_cursor.close()target_conn.close()python保存到csv文件将每个数据表分别存到csv文件中。注意该方法目前只保存了数据但是没有保存数据表结构与创建语句。1234567891011121314151617181920212223242526272829importpymysqlimportcsvsource_connpymysql.connect(host源数据库地址,user用户名,password密码,database源数据库名)source_cursorsource_conn.cursor()source_cursor.execute(SHOW TABLES)tablessource_cursor.fetchall()fortableintables:table_nametable[0]source_cursor.execute(fSELECT * FROM {table_name})rowssource_cursor.fetchall()columns[desc[0]fordescinsource_cursor.description]withopen(f{table_name}.csv,w, newline, encodingutf-8) asfile:writercsv.writer(file)writer.writerow(columns)writer.writerows(rows)source_cursor.close()source_conn.close()到此这篇关于如何使用python转移mysql数据库中的全部数据的文章就介绍到这了
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2557216.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!