【转】Python之ssh跳板机连接数据库

匿名 (未验证) 提交于 2019-12-02 22:51:30

普通连接数据库

一开始我不会使用连接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要安装两个包:sshtunnelparamiko

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())

好了,测试你的代码,结果如下图

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!