python paramiko实现两个数据库之间的数据传输 代码
时间: 2024-02-04 08:04:06 浏览: 90
不同数据库之间互相传递数据
以下是使用paramiko实现两个数据库之间数据传输的python代码示例:
```python
import paramiko
import pymysql
# 定义ssh连接的参数
ssh_host = 'ssh_host_ip'
ssh_user = 'ssh_user'
ssh_password = 'ssh_password'
# 定义源数据库连接的参数
src_host = 'src_db_host'
src_user = 'src_db_user'
src_password = 'src_db_password'
src_db = 'src_db_name'
src_table = 'src_table_name'
# 定义目标数据库连接的参数
dst_host = 'dst_db_host'
dst_user = 'dst_db_user'
dst_password = 'dst_db_password'
dst_db = 'dst_db_name'
dst_table = 'dst_table_name'
# 建立ssh连接
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ssh_host, username=ssh_user, password=ssh_password)
# 建立源数据库连接
src_conn = pymysql.connect(host=src_host, user=src_user, password=src_password, database=src_db)
src_cursor = src_conn.cursor()
# 建立目标数据库连接
dst_conn = pymysql.connect(host=dst_host, user=dst_user, password=dst_password, database=dst_db)
dst_cursor = dst_conn.cursor()
# 通过ssh连接建立socks5代理
ssh_transport = ssh.get_transport()
dst_host_port = (dst_host, 3306)
local_host_port = ('127.0.0.1', 3307)
ssh_channel = ssh_transport.open_channel('direct-tcpip', dst_host_port, local_host_port)
# 建立目标数据库连接
dst_conn = pymysql.connect(host='127.0.0.1', port=3307, user=dst_user, password=dst_password, database=dst_db)
dst_cursor = dst_conn.cursor()
# 从源数据库读取数据
src_cursor.execute("SELECT * FROM {}".format(src_table))
rows = src_cursor.fetchall()
# 将数据插入到目标数据库
for row in rows:
sql = "INSERT INTO {} VALUES {}".format(dst_table, row)
dst_cursor.execute(sql)
# 提交事务
dst_conn.commit()
# 关闭连接
src_cursor.close()
src_conn.close()
dst_cursor.close()
dst_conn.close()
ssh.close()
```
上述代码中,通过paramiko实现了ssh连接,并使用socks5代理连接到目标数据库。然后从源数据库读取数据,并将数据插入到目标数据库。
阅读全文