目录
1.不同数据库之间的数据迁移
import pymysql
#查询的数据表
db2=pymysql.connect('127.0.0.1','root','1234','o_sheet')
cursor2=db2.cursor() //其实就是用来获得python执行Mysql命令的方法,也就是操作游标
len2=cursor2.execute('select * from address ' )
#插入的数据表
db1=pymysql.connect('localhost','root','1234','i_sheet')
cursor1=db1.cursor()
sql="insert into address_test() value(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"
num=11
for i in range(int(len2/num)):
print(i)
#查询表获取num条记录
data1=cursor2.fetchmany(num)
#插入表executemany能同时执行多条语句,第一个参数为sql模板字符串,第二个为sql的参数,是一个列表
cursor1.executemany(sql,data1)
#这样可以一次性全部导入
data2=cursor2.fetchall() //返回查询到的所有记录
cursor1.executemany(sql,data2)
db1.commit()
db1.close()
db2.close()
2.同一数据库的不同表间的数据迁移
import pymysql
def cate(host,user,password,dbname):
# 原始数据的数据连接
con=pymysql.connect(host=host,user=user,password=password,database=dbname,charset='utf8')
print("ok")
cursor = con.cursor()
# 迁移库的数据连接
# db2 = pymysql.connect('192.168.0.110', 'root', '1234', 'test1')
# cursor2 = db2.cursor()
# 批量插入语句
sql1 ='''insert into 告警表1\
(根源告警标识,确认状态,告警级别,网元,values(%s, %s, %s, %s)'''
sql2 ='''insert into 告警表2\
(根源告警标识,确认状态,告警级别,网元,values(%s, %s, %s, %s)'''
# 定义查询语句
len1 = cursor.execute("select * from alldata where 告警码 ='低级')
print(len1)
# 每次循环导入的数据量
num = 11
for i in range(int(len1/num)):
print(i)
data1 = cursor.fetchmany(num)
cursor.executemany(sql1, data1)
len2 = cursor.execute("select * from alldata where 告警码 ='高级'")
print(len2)
for i in range(int(len2/num)):
print(i)
data2 = cursor.fetchmany(num)
cursor.executemany(sql2, data2)
# 把剩下的数据一次性导入
# data = cursor.fetchall()
# cursor.executemany(sql1, data)
# 这种可以全部导入
# data = cursor1.fetchall()
# cursor.executemany(sql, data)
# 提交到数据库
con.commit()
# 关闭数据库连接
con.close()
if __name__ == "__main__":
cate('127.0.0.1','root','root','test')