导言:数据迁移对于软件开发过程中是必不可少的,有些公司会有专门的DBA,那数据迁移就归DBA搞定就好了,但大部分的公司不会单独去设立DBA这个职位,面对版本升级,数据库有所大改动的时候,测试人员可以利用Python MySQLdb模块很好的完成Mysql的数据迁移

1.Python MySQLdb介绍

Python标准的数据库接口的Python DB-API(包括Python操作MySQL),大多数Python数据库接口坚持这个标准。 连接mysql数据库:
conn=MySQLdb.connect(host="120.24.239.215",user="root",passwd="123456",db="test",charset="utf8", port="3306")
cursor = conn.cursor()

2.Mysql数据迁移

连接mysql数据库之后,利用sql语句将旧版本的数据提取出来,之后把数据相应放入新版本数据库中即可
以下看下mysql的一些操作:
#删除表
sql = "drop table"
cursor.execute(sql)
#创建表
sql = "create table if not exists user(name varchar(128) primary key)"
cursor.execute(sql)
#写入
sql = "insert into user(name) values(\"123456\")"
#更新
sql = "update user set name=\"654321\" where name='123456'"
#查询
n = cursor.execute("select * from user")
for row in cursor.fetchall():      print row
#删除
sql = "delete from user where name=\"\654321

3.项目实例部分代码

# -*- coding:utf-8 -*-
import MySQLdb
import sys
import time
timer = time.ctime()
year = timer.split(" ")[4]
reload(sys)
sys.setdefaultencoding("utf-8")# 4.3数据库
def conn_db4():conn = MySQLdb.connect(host='120.24.239.215',port=3306,user='root',passwd='*******',db="test_mncats4.3",charset="utf8")return conn# 3.0数据库
def conn_db3():conn = MySQLdb.connect(host='120.24.239.215',port=3306,user='root',passwd='******',db="test_mncats3.0",charset="utf8")return conn# 获取表数据
def data(table):conn = conn_db3()cur = conn.cursor()sql = "select * from " + "".join(table)cur.execute(sql)datas = cur.fetchall()cur.close()conn.commit()conn.close()return datas# 获取员工表中已注册员工
def data_2(table):conn = conn_db3()cur = conn.cursor()sql = "select * from " + "".join(table) + " where employee_active = \"1\""cur.execute(sql)datas = cur.fetchall()cur.close()conn.commit()conn.close()return datas# 将3.0数据导入4.0ap_lib表
def ap_lib_file():conn = conn_db4()cur = conn.cursor()ap = data("ap")ap_lib = data("ap_lib")for n in range(len(ap_lib)):num = 0for m in range(len(ap)):if ap_lib[n][2] == ap[m][2]:num = 1if num == 1:sql = "insert into ap_lib(aplib_id, sn, apmac, type, createdate) values(" + \"".join(str(ap_lib[n][0])) + ",\"" + "".join(str(ap_lib[n][1])) + "\",\"" + "".join(str(ap_lib[n][2])) + \"\",\"" + "1\",\"" + "".join(str(ap_lib[n][3])) + "\")"else:sql = "insert into ap_lib(aplib_id, sn, apmac, type, createdate) values(" + \"".join(str(ap_lib[n][0])) + ",\"" + "".join(str(ap_lib[n][1])) + "\",\"" + "".join(str(ap_lib[n][2])) + \"\",\"" + "0\",\"" + "".join(str(ap_lib[n][3])) + "\")"try:cur.execute(sql)except:print u"将数据导入ap_lib表 Failed"cur.closeconn.commit()conn.close()print u"ap_lib表导入完成"# 创建公司相应签到签退表&外勤签到签退表
def create_table():company = data("company")for n in range(len(company)):table_1 = "sign_information_" + "".join(str(company[n][0])) + "_" + "".join(str(year))table_2 = "outside_signinfo_" + "".join(str(company[n][0])) + "_" + "".join(str(year))try:create_table_sign(table_1, str(company[n][0]))create_table_outside(table_2, str(company[n][0]))except Exception, e:print eprint u"sign表创建完成"# 将3.0签到签退数据迁移4.0相应表中
def transfer_sign():company = data("company")for n in range(len(company)):table_1 = "sign_information_" + "".join(str(company[n][0])) + "_2015"table_2 = "outside_signinfo_" + "".join(str(company[n][0])) + "_2015"get_sign(company[n][0], table_1)get_outside(company[n][0], table_2)delete_none(table_1)print u"已删除数据库传入空值显示为None"print u"sign表导入完成"#  删除数据库空值显示为None
def delete_none(company):conn = conn_db4()cur = conn.cursor()sql_out_type = "UPDATE " + "".join(str(company)) + " SET sign_out_type = \"\" WHERE sign_out_type = \"None\""cur.execute(sql_out_type)sql_in_desrc = "UPDATE " + "".join(str(company)) + " SET sign_in_desrc = \"\" WHERE sign_in_desrc = \"None\""cur.execute(sql_in_desrc)sql_out_desrc = "UPDATE " + "".join(str(company)) + " SET sign_out_desrc = \"\" WHERE sign_out_desrc = \"None\""cur.execute(sql_out_desrc)sql_out_place = "UPDATE " + "".join(str(company)) + " SET sign_in_place = \"\" WHERE sign_in_place = \"None\""cur.execute(sql_out_place)sql_in_place = "UPDATE " + "".join(str(company)) + " SET sign_out_place = \"\" WHERE sign_out_place = \"None\""cur.execute(sql_in_place)sql = "UPDATE " + "".join(str(company)) + " SET sign_out = NULL WHERE sign_out = \"0000-00-00 00:00:00\""cur.execute(sql)sql = "UPDATE " + "".join(str(company)) + " SET sign_in = NULL WHERE sign_in = \"0000-00-00 00:00:00\""cur.execute(sql)cur.closeconn.commit()conn.close()......  #这个过程中可以写很多迁移对应表之间的方法,将旧版本数据迁移新版本# 删除多余签到签退表
def delete_table():conn = conn_db4()cur = conn.cursor()company = data("company")for n in range(len(company)):table_1 = "sign_information_" + "".join(str(company[n][0]))table_2 = "outside_signinfo_" + "".join(str(company[n][0]))sql1 = "select count(*) as num from " + "".join(table_1)sql2 = "select count(*) as num from " + "".join(table_2)cur.execute(sql1)data1 = cur.fetchall()for m in range(len(data1)):if data1[m][0] == 0:sql3 = "drop table " + "".join(table_1)cur.execute(sql3)cur.execute(sql2)data2 = cur.fetchall()for q in range(len(data2)):if data2[q][0] == 0:sql4 = "drop table " + "".join(table_2)cur.execute(sql4)cur.closeconn.commit()conn.close()print u"删除创建的多余sign_information表&outside_info表"# 将获取3.0表数据导入4.0相应表
def transfer_DB():role()......#上述的编写迁移数据的方法,便于单个表测试if __name__ == "__main__":transfer_DB()

Python + Mysql数据迁移相关推荐

  1. python做mysql数据迁移_Python中MySQL数据迁移到MongoDB脚本的方法

    MongoDB简介 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库和非关系数据库 ...

  2. centos mysql数据迁移_Mysql 5.7.17 离线版安装和数据迁移(centos 7)

    总结下离线版 MySQL 5.7.17 的安装步骤: 1.从官网下载mysql 离线版版安装包 mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz: 2.上传安装包my ...

  3. mysql数据迁移 脚本_PHP将数据从Oracle向Mysql数据迁移实例

    为什么要迁移? 首先从运营成本考虑,用Mysql可以节约不少的费用.另一方面,Mysql的稳定性及功能不断地提高与增强,基本上可以满足客户的需求,如支持多 节点部署,数据分区等.还有就是Mysql使用 ...

  4. 在Linux中进行MySQL数据迁移

    由于项目升级或者服务器更换,需要将数据从一个数据库服务转移到另一个数据库服务中.两个数据库所在的服务器的公网IP分别为x.x.x.x和y.y.y.y. 进行MySQL数据迁移之前,需要做一些准备工作, ...

  5. DM 数据迁移工具——DTS(MySQL数据迁移到DM8数据库 Windows环境)

    DM 数据迁移工具--DTS MySQL数据迁移到DM8数据库 Windows环境 DM 数据迁移工具 DM DTS 提供了主流大型数据库迁移到 DM.DM 到 DM.文件迁移到 DM 以及 DM 迁 ...

  6. Mysql数据迁移到SqlServer

    Mysql数据迁移到SqlServer 我们想要将Mysql的数据库迁移到SqlServer中,怎么办呢? 首先安装mysql-connector-odbc 官网下载地址:https://dev.my ...

  7. MySQL数据迁移报错1067 - Invalid default value for ‘xxx‘

    本文使用Navicat解决MySQL数据迁移时候的报错1067 - Invalid default value for 'xxx'. 现象描述: 源数据库版本:5.6.36 目标数据库版本:5.7.2 ...

  8. docker mysql数据迁移

    docker mysql数据迁移 1.导出mysql数据 1.1 #导出对应数据库mysqldump -u 用户名 -p 数据库名 > 导出的文件名1.2 #示例mysqldump -u roo ...

  9. oracle 向mysql数据迁移

      为什么要迁移? 首先从运营成本考虑,用Mysql可以节约不少的费用.另一方面,Mysql的稳定性及功能不断地提高与增强,基本上可以满足客户的需求,如支持多 节点部署,数据分区等.还有就是Mysql ...

最新文章

  1. opencv-python的格式转换 RGB与BGR互转
  2. python适合做后端开发吗-pythonWeb后端开发好呢?还是从事网络爬虫比较好呢?
  3. 堆空间大小怎么配置,各区域怎么划分
  4. MyBatis运行原理(二)SqlSession对象创建过程分析
  5. Java黑皮书课后题第5章:**5.27(显示闰年)编写程序,显示从101到2100期间所有闰年,每行显示10个。数字之间用一个空格字符隔开,同时显示这期间闰年的数目
  6. Counting Bits(Difficulty: Medium)
  7. 【转载】输出二进制 C
  8. Txt格式配置表无法解析的问题——BOM
  9. 牛客14386 水仙花数
  10. JavaScript之BOM基础
  11. matlab的pulse使用想法
  12. Moses manual 中Basline System 2.3.4节用IRSTLM创建语言模型的命令有误
  13. ckpt下载 deeplabv3_OpenCV4 部署DeepLabv3+模型
  14. 学习笔记——web安全深度剖析
  15. CodeForces round 753 problem B Odd Grasshopper(奇怪的蚱蜢)
  16. arduino analogread_Arduino编程语言教程,Arduino和单片机的区别
  17. Scala学习02——Scala类和对象
  18. pdf做成翻页电子书_软网推荐:文档秒变3D翻页电子书
  19. Javascript常见设计模式解析
  20. WordPress仿站工具构建网页时踩坑

热门文章

  1. My加油努力--DAY01 (7/13)
  2. 面试官:来,这位精神小伙,简简单单写个快速排序吧
  3. 设计一个银行账户类,可以存钱、取钱、查钱、获取开户日期 内有测试类
  4. AI | 一次无监督学习的尝试(皮肤分类)
  5. 从零开始使用 Webpack 搭建 Vue3 开发环境
  6. 从零开始学WEB前端——VUE脚手架
  7. SAP PP组织结构及概念
  8. jsp判断请求来自手机代码学习
  9. 这些代表了未来出行的交通工具,你注意到了吗?
  10. 微信小程序使用@vant/weapp组件