python多进程实现MySQL表1读取数据插到表2
若数据量较大用多进程
import pymysql
from sqlalchemy import create_engine
import pandas as pd
import os
import multiprocessing
#库1表1读取数据插到库2表2函数
def to_mysql(param1, param2):
mysql_engine1 = create_engine('mysql+pymysql://username1:password1@88.88.888.888:8888/dbname1?charset=utf8')
sql = """ select * from source_table_name where field1={} and field2={}""".format(param1, param2)
data_df = pd.read_sql_query(sql, mysql_engine1)
mysql_engine1.dispose()
mysql_engine2 = create_engine('mysql+pymysql://username2:password2@00.00.000.000:0000/dbname2?charset=utf8')
data_df.to_sql('target_table_name', mysql_engine2, if_exists='append', index=False)
mysql_engine2.dispose()
# 多进程调用
print('Parent process {} is Running'.format(os.getpid()))
p1 = multiprocessing.Process(target=to_mysql, args=('param1_value1', 'param2_value1'))
p2 = multiprocessing.Process(target=to_mysql, args=('param1_value2', 'param2_value2'))
p3 = multiprocessing.Process(target=to_mysql, args=('param1_value3', 'param2_value3'))
p4 = multiprocessing.Process(target=to_mysql, args=('param1_value4', 'param2_value4'))
print('p1 process start')
p1.start()
print('p2 process start')
p2.start()
print('p3 process start')
p3.start()
print('p4 process start')
p4.start()
p1.join()
p2.join()
p3.join()
p4.join()