python 本地连接远程服务器的DB

1. 最近在准备做接口自动化的测试的时候,需要校验接口请求是否成功?真实的业务数据的话,判断是否成功是比较复杂的,如果没有连接到DB的辅助的话,是很难校验的,然后自己所在公司的DB呢又是在远程服务器上,本地无法连接到,然后今天终于连接上远程DB了,记录下,方便后续的学习!

2. 公司的DB应该基本上都是远程的吧,很少有本地自己的电脑上可以直接连接的,然后我们人工测试的时候呢,用的是navicat的工具,连接的时候会有ssh 和 常规两部分,看下这个截图,这个对后边理解这个远程的连接还是挺有帮助的!

 

 

 

 

 

我个人的理解,大致的意思就是说,通过这个SSH的连接,先连接到远程的那个机器上,先建立一个长连接,然后再通过第二张截图的配置连接到具体的db

下边的python通过代码连接的话,基本上也是这个意思 

 

3. 通过这个模块 SSHTunnelForwarder 先建立远程的连接 ,直接上代码吧

from sshtunnel import SSHTunnelForwarder
server = SSHTunnelForwarder(
        # 指定ssh登录的跳转机的address
        ssh_address_or_host=(ssh_ip, ssh_port),  # 分别对应填写上图中的 1 , 2 位置的参数
        ssh_username=ssh_username,  # 对应上图的 3 位置的参数,即ssh用户名
        # 设置密钥
        ssh_password=ssh_password,  # 对应上图的 4 位置的参数,即ssh用户密码
        # 设置数据库服务地址及端口
        # local_bind_address=('127.0.0.1',3306),
        remote_bind_address=(local_db_ip, local_db_port)) 
server.start()
conn = psycopg2.connect(database='DB_NAME',  # 要连接的数据库名,对应下图的 3 位置的参数
user=local_db_username, # 要连接的数据库的用户名,对应下图的 4 位置的参数
password=local_db_password, # 要连接的数据库的用户密码,对应下图的 5 位置的参数
host='127.0.0.1', # 此处必须是是127.0.0.1
port=server.local_bind_port)

 

第一部分就是先建立一个远程的连接,然后启动,然后第二部分呢,就是连接DB(这个部分就是常规的连接DB的部分了啦)

4. 说点题外话,由于安全方面的考虑,每个人的DB的用户名和密码可能都不一样,那你写好代码给别人,别人不就知道你的密码了吗?所有要把密码放在本地的一个文件里边,通过读取本地的信息来获取到
DB的相关信息,然后代码提交上去之后,如果别的同事要执行的话,肯定是会报错的,这个时候需要他在本地也保存一份DB信息的配置文件的

 

posted on 2022-01-07 11:39  ClareBaby01  阅读(153)  评论(0编辑  收藏  举报