最近幾天在做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