公網連接內網數據庫(如雲數據庫)時,通常需要白名單;如果不是白名單IP,通常需要一個跳板機(類似代理)來連接內網數據庫,
下方以mysql為例(其他數據庫基本一致):
import pymysql as mysql
from sshtunnel import SSHTunnelForwarder
server=SSHTunnelForwarder((SSH.IP,SSH.PORT), #跳板機ip及端口
ssh_username=SSH.USERNAME, #跳板機賬號
ssh_password=SSH.PASSWORD, #跳板機密碼
remote_bind_address=(DATABASE.IP,DATABASE.PORT)) #目標數據庫服務器ip、端口
server.start() #啟動連接管道
conn = mysql.connect(
host='127.0.0.1', #此處必須是是127.0.0.1
port=server.local_bind_port, #api固定寫法
user=DATABASE.USERNAME, #目標數據庫賬號
passwd=DATABASE.PASSWORD, #目標數據庫密碼
db=DATABASE NAME) #目標數據庫名稱
cur=conn.cursor() #獲取數據庫游標
sql="select * from fq_wealth_user where login_name='test888';"
cur.execute(sql) #執行sql
AllData=cur.fetchall() #獲取所有執行sql的結果
print(AllData)
#conn.commit()
cur.close() #關閉游標
conn.close() #關閉數據庫連接