普通連接數據庫
一開始我不會使用連接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要安裝兩個包:sshtunnel和paramiko
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())
好了,測試你的代碼,結果如下圖

