2025年5月17日 星期六 乙巳(蛇)年 二月十九 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Python

python使用跳板机连接mysql

时间:04-18来源:作者:点击数:45

今天解决了一个问题

平时都是使用python连接内网数据库

今天想在灰度进行测试,需要连接外网数据库

需要使用跳板机进行连接

直接上配置:

  • import sshtunnel
  • import pymysql
  • # sshtunnel.TUNNEL_TIMEOUT = 6000000
  • class SSH_to_Mysql:
  • def ssh_mysql_conn(self):
  • self.server = sshtunnel.SSHTunnelForwarder(
  • ('跳板机IP', int(跳板机端口)),
  • ssh_username='跳板机用户名',
  • ssh_password='跳板机密码',
  • remote_bind_address=('数据库IP', int(数据库端口))
  • )
  • self.server.start()
  • # self.server.set_keepalive
  • # self.server.ping(reconnect=True)
  • self.conn = pymysql.connect(
  • host = '127.0.0.1',
  • port = self.server.local_bind_port,
  • user = '数据库用户名',
  • password = '数据库密码',
  • # db = xxx
  • charset="utf8",
  • cursorclass=pymysql.cursors.DictCursor,
  • autocommit=1
  • )
  • return self.conn

总结:

1. 我的跳板机是通过密码连接的,所以使用的是:ssh_password 如果跳板机是通过密钥连接,则需要ssh_pkey参数,值是密钥的路径

2. SSHTunnelForwarder方法返回的server对象必须调用start()方法后才可以正常使用

3. 在连接MySQL时,connect()方法的参数中的host必须为127.0.0.1

4. 由于端口必须为数字类型,所以使用int()方法转换

5. 使用结束后,为了安全起见,调用server的close()方法关闭连接,当然也可以使用with语句,此时不仅可以省略close()方法,也可以省略start()方法

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门