Python之ssh跳板机连接数据库
Posted 学而时习之,不亦说乎
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python之ssh跳板机连接数据库相关的知识,希望对你有一定的参考价值。
普通连接数据库
一开始我不会使用连接SSH的方法,所以想了一个笨办法,那就是先在本地建立一个数据库,请开发同学把线上数据导出,然后我再导入本地,之后让前端测试同学下单(系统会自动调用返佣接口并将数据落盘),再去找开发同学把数据导出成sql语句,我再把更新的数据导入到本地。经过这么一番折腾后才正常测试,说这么多事为了大家以后遇到这种情况,不要再向我一样踩这个坑。上代码,上代码……
1 import os 2 import pymysql 3 import traceback 4 5 # 整个项目根目录的绝对路劲 6 baseDir = os.path.dirname(os.path.dirname(__file__)) 7 # 数据库配置文件相对于工程根目录的相对路径 8 config_filePath = baseDir + "\\\\public\\\\db_config.ini" 9 10 # 打开数据库连接 11 db = pymysql.connect(host=\'127.0.0.1\', port=3306, user=\'root\', passwd=\'MyPass@123\', db=\'test\') 12 # 使用 cursor() 方法创建一个游标对象 cursor 13 cursor = db.cursor() 14 #cursor.execute("SELECT VERSION()") 15 # 使用 fetchone() 方法获取单条数据. 16 #data = cursor.fetchone() 17 #print("Database version : %s " % data)
看本地连接就这么简单,那么我们来看看SSH如何建立连接
数据库SSH连接
首先,你的python要安装两个包:sshtunnel和paramiko
import pymysql, paramiko from sshtunnel import SSHTunnelForwarder with SSHTunnelForwarder( (\'11.11.11.111\', 22), # 这里的IP地址是在连接信息里显示的SSH主机名或IP地址 ssh_username="tianchuan", # 这里是运维给你的用户名,而不是数据库的用户名 ssh_pkey="e:\\\\zhuom\\\\tianchuan_rsa", # 这里是运维给你的公钥文件存放地址 remote_bind_address=(\'跳板机域名\', 3306)) as server: conn = pymysql.connect( host=\'127.0.0.1\', port=server.local_bind_port, user=\'youhaodongxi\', passwd=\'数据库密码\', db=\'youhaodongxi\') cur = conn.cursor() cur.execute("show databases") print(cur.fetchall())
好了,测试你的代码,结果如下图
以上是关于Python之ssh跳板机连接数据库的主要内容,如果未能解决你的问题,请参考以下文章