普通连接数据库
一开始我不会使用连接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())
好了,测试你的代码,结果如下图