【轉】Python之ssh跳板機連接數據庫


普通連接數據庫

一開始我不會使用連接SSH的方法,所以想了一個笨辦法,那就是先在本地建立一個數據庫,請開發同學把線上數據導出,然后我再導入本地,之后讓前端測試同學下單(系統會自動調用返佣接口並將數據落盤),再去找開發同學把數據導出成sql語句,我再把更新的數據導入到本地。經過這么一番折騰后才正常測試,說這么多事為了大家以后遇到這種情況,不要再向我一樣踩這個坑。上代碼,上代碼……

 1 import os
 2 import pymysql
 3 import traceback
 4 
 5 # 整個項目根目錄的絕對路勁
 6 baseDir = os.path.dirname(os.path.dirname(__file__))
 7 # 數據庫配置文件相對於工程根目錄的相對路徑
 8 config_filePath = baseDir + "\\public\\db_config.ini"
 9 
10 # 打開數據庫連接
11 db = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='MyPass@123', db='test')
12 # 使用 cursor() 方法創建一個游標對象 cursor
13 cursor = db.cursor()
14 #cursor.execute("SELECT VERSION()")
15 # 使用 fetchone() 方法獲取單條數據.
16 #data = cursor.fetchone()
17 #print("Database version : %s " % data)

看本地連接就這么簡單,那么我們來看看SSH如何建立連接


數據庫SSH連接

首先,你的python要安裝兩個包:sshtunnelparamiko

import pymysql, paramiko
from sshtunnel import SSHTunnelForwarder
 
with SSHTunnelForwarder(
        ('11.11.11.111', 22), # 這里的IP地址是在連接信息里顯示的SSH主機名或IP地址
        ssh_username="tianchuan", # 這里是運維給你的用戶名,而不是數據庫的用戶名
        ssh_pkey="e:\\zhuom\\tianchuan_rsa", # 這里是運維給你的公鑰文件存放地址
        remote_bind_address=('跳板機域名', 3306)) as server:
    conn = pymysql.connect(
        host='127.0.0.1',
        port=server.local_bind_port,
        user='youhaodongxi',
        passwd='數據庫密碼',
        db='youhaodongxi')
    cur = conn.cursor()
    cur.execute("show databases")
    print(cur.fetchall())

好了,測試你的代碼,結果如下圖

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM