python 不同数据库之间表数据同步

python 不同数据库之间表数据同步

最近项目有这样的需求:不同数据库中表数据的同步操作。也就是从一个数据库把表数据插入到另一个数据库的表中。

上代码

import configparser
import pymysql

# 读取配置文件
conf = configparser.RawConfigParser()
conf.read("D:\PycharmProjects\economic_relation\\venv\Include\control\conf.ini")
# 获取源数据库参数
sourceDBUrl  = str(conf.get('soureDB', 'sourcedburl'))
sourceDBUser = str(conf.get('soureDB', 'sourcedbuser'))
sourceDBKey =  str(conf.get('soureDB', 'sourcedbkey'))
sourceDataBse = str(conf.get('soureDB', 'sourcedatabse'))
# 获取目标数据库参数
targetdburl =str(conf.get('targetDB', 'targetdburl'))
targetdbuser =str(conf.get('targetDB', 'targetdbuser'))
targetdbkey =str(conf.get('targetDB', 'targetdbkey'))
targetdbs =str(conf.get('targetDB', 'targetdbs'))
#链接源数据库
conn = pymysql.connect(host=sourceDBUrl, user=sourceDBUser, passwd=sourceDBKey, db=sourceDataBse, charset='utf8')
cur = conn.cursor(cursor=pymysql.cursors.DictCursor)
#链接目标数据库
conn2 = pymysql.connect(host=targetdburl, user=targetdbuser, passwd=targetdbkey, db=targetdbs, charset='utf8')
cur2 = conn2.cursor()
#读取sql文件
file=open("D:\PycharmProjects\economic_relation\\venv\Include\sql\\test",mode='r',encoding='utf-8')
sql="".join(file.readlines())
# 返回受影响的行数
cur.execute(sql)
# 返回数据,返回的是tuple类型
res = cur.fetchall()
# 获取目标表名和字段
table = str(conf.get('targetDB', 'insert_table'))
colums = str(conf.get('targetDB', 'insert_colums'))
# 源表字段
source_colums = str(conf.get('soureDB', 'source_colums'))
# 插入sql
insert_sql = "insert into "+ table +'('+ colums +')'+ " values("+("%s,"*(len(colums.split(","))))[:-1]+");"
# insert_sql = "insert into "+ table +'('+ colums +')'+ " values("+type_colums+");"
print(insert_sql)
list=[]
#拼写插入参数
for item in res:
    args = []
    for i in source_colums.split(","):
        args.append(str(item[i]))
    list.append(tuple(args))
print(list)
try:
    cur2.executemany(insert_sql,list)
    conn2.commit()
except Exception as e:
    print("Error:",e)

cur.close()
conn.close()
cur2.close()
conn2.close()

配置文件

在这里插入图片描述

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python 可以使用 Paramiko 库实现 SSH 连接并执行命令,从而实现两个服务器之间网站数据同步。以下是一个示例代码,假设您已经安装了 Paramiko 库: ```python import paramiko # 创建 SSH 客户端 ssh = paramiko.SSHClient() # 允许连接不在本地主机公钥中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接服务器1 ssh.connect('server1_ip', username='username', password='password') # 执行命令,将服务器1中的网站目录同步到服务器2中 command = 'rsync -avz /path/to/website/ server2_ip:/path/to/website/' stdin, stdout, stderr = ssh.exec_command(command) # 输出命令执行结果 print(stdout.read().decode('utf-8')) print(stderr.read().decode('utf-8')) # 关闭 SSH 连接 ssh.close() ``` 而对于数据库同步,您可以使用 PyMySQL 库连接数据库并执行 SQL 语句。以下是一个示例代码,假设您已经安装了 PyMySQL 库: ```python import pymysql # 连接服务器1的数据库 conn1 = pymysql.connect(host='server1_ip', user='username', password='password', database='database_name') cursor1 = conn1.cursor() # 连接服务器2的数据库 conn2 = pymysql.connect(host='server2_ip', user='username', password='password', database='database_name') cursor2 = conn2.cursor() # 执行查询语句 query = 'SELECT * FROM table_name' cursor1.execute(query) # 获取查询结果 result = cursor1.fetchall() # 在服务器2中插入查询结果 for row in result: insert_query = f"INSERT INTO table_name (column1, column2) VALUES ('{row[0]}', '{row[1]}')" cursor2.execute(insert_query) conn2.commit() # 关闭数据库连接 cursor1.close() conn1.close() cursor2.close() conn2.close() ``` 需要注意的是,这只是示例代码,实际情况中您需要根据自己的需要进行适当修改。同时,为了保证数据安全,请务必在实际使用过程中谨慎处理敏感信息,例如数据库密码等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值