服务器之家

服务器之家 > 正文

python详解如何通过sshtunnel pymssql实现远程连接数据库

时间:2022-02-20 00:20     来源/作者:西域战士

最近几天在做Python相关项目,有个需求 ,是希望在任何机器上都可以ssh到某台在数据库白名单的机器上,然后访问数据库,不然的话就要去服务器安装Python环境,运行程序,比较麻烦,翻阅多篇博客文章,决定自己去实现。

涉及库:pymssql、sshtunnel
涉及数据库:SQLSERVER

场景如下:

python详解如何通过sshtunnel pymssql实现远程连接数据库

跳板机核心代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def __get_ssh_connector(self):
     # 远程连接
     # 跳板机地址 端口,服务器账号,密码配置
     server = SSHTunnelForwarder(
         (
             self.connect_config.get("ssh_host", ‘白名单服务器地址'),
             self.connect_config.get("ssh_port", 22)
         ),
         ssh_username=self.connect_config.get("ssh_username", ‘白名单服务器账号 '),
         ssh_password=self.connect_config.get("ssh_password", ‘白名单服务器密码 '),
         # 内网数据库地址和端口
         remote_bind_address=(self.connect_config.get("dbserver", '目标数据库地址'), self.connect_config.get("ssh_mssql_port", ‘数据库端口'))
     )
     server.start()
     return server  # 远程主机上的mssql通过ssh连接映射到本地的端口

pymssql 连接数据库核心代码

?
1
2
3
4
5
6
7
def get_mssql_connector(self):
      return get_mssql_connector({
          "port": self.server.local_bind_port, #非常重要
          "username": ‘目标数据库账号',
          "password": ‘目标数据库密码',
          "db": self.connect_config.get('db', ‘目标数据库')
      })
?
1
2
3
4
5
6
7
def __get_mssql_connector(database_config):
    host = database_config.get('host', '127.0.0.1')
    port = database_config.get('port', ‘数据库端口')
    user = database_config.get('username', ‘目标数据库账号')
    passwd = database_config.get('password', ‘目标数据库密码')
    db = database_config.get('db', ‘目标数据库')
    return  pymssql.connect(host=host, port=port, user=user, password=passwd, database=db, charset="UTF-8")

MySql 和SQLSERVER方法一样,不一样的地方pymssql.connect改成pymysql.connect

人生第一篇技术博客,第一次奉献给 大家

到此这篇关于python详解如何通过sshtunnel pymssql实现远程连接数据库的文章就介绍到这了,更多相关python 远程连接数据库内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/foowwpub/article/details/120987996

相关文章

热门资讯

蜘蛛侠3英雄无归3正片免费播放 蜘蛛侠3在线观看免费高清完整
蜘蛛侠3英雄无归3正片免费播放 蜘蛛侠3在线观看免费高清完整 2021-08-24
2022年最旺的微信头像大全 微信头像2022年最新版图片
2022年最旺的微信头像大全 微信头像2022年最新版图片 2022-01-10
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
返回顶部