最近几天在做Python相关项目,有个需求 ,是希望在任何机器上都可以ssh到某台在数据库白名单的机器上,然后访问数据库,不然的话就要去服务器安装Python环境,运行程序,比较麻烦,翻阅多篇博客文章,决定自己去实现。
涉及库:pymssql、sshtunnel
涉及数据库:SQLSERVER
场景如下:
跳板机核心代码
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