«
Python3数据抽取同步demo
发布于
阅读:71
教程
import pymysql
import datetime
import ulid
# 连接源数据库
source_conn = pymysql.connect(
host='192.168.1.51',
user=数据库用户名,
password='数据库密码',
db='源数据库'
)
# 连接目标数据库
target_conn = pymysql.connect(
host='192.168.1.51',
user=数据库用户名,
password='数据库密码',
db='目标数据库'
)
# 获取源数据库游标
source_cursor = source_conn.cursor()
# 获取目标数据库游标
target_cursor = target_conn.cursor()
# 初始化已更新和已插入的行数
updated_rows = 0
inserted_rows = 0
# 执行查询
source_cursor.execute("SELECT * FROM emlog_user")
# 遍历查询结果,并将数据插入或更新到目标数据库
for row in source_cursor:
# 检查目标数据库中是否已经存在相同的数据
check_query = "SELECT * FROM user WHERE username = %s"
target_cursor.execute(check_query, (row[1]))
# 如果目标数据库中存在相同的数据,则比较数据是否有变化
if target_cursor.rowcount > 0:
target_row = target_cursor.fetchone()
# 如果数据有变化,则更新目标数据
if row[3] != target_row[3]:
update_query = "UPDATE user SET uid = %s,nickname = %s,password = %s,update_time = %s WHERE username = %s"
target_cursor.execute(update_query, (row[0],row[3], row[2], datetime.datetime.now(), row[1]))
updated_rows += 1
# 如果目标数据库中不存在相同的数据,则插入新数据
else:
insert_query = "INSERT INTO user (uid, username, password, nickname,update_time, uuid) VALUES (%s, %s, %s, %s, %s, %s)"
target_cursor.execute(insert_query, (row[0], row[1], row[2], row[3],datetime.datetime.now(),ulid.new()))
inserted_rows += 1
# 提交目标数据库事务
target_conn.commit()
# 打印已更新和已插入的行数
print(f"已更新数据: {updated_rows} 条")
print(f"已写入数据: {inserted_rows} 条")
# 关闭游标和数据库连接
source_cursor.close()
source_conn.close()
target_cursor.close()
target_conn.close()
MySQL Python