本地?zé)o法連接mysql,必須連到服務(wù)器上才能訪問到msyql,gui工具一般都支持,python的話需要用到sshtunnel庫。
代碼如下:
import pymysql
from sshtunnel import SSHTunnelForwarder
def onlinemysql(sql_select):
"""使用pymysql模塊通過SSHTunnelForwarder隧道連接mysql"""
with SSHTunnelForwarder(
('跳板機(jī)服務(wù)器地址' , '跳板機(jī)port'), # B機(jī)器的配置
ssh_password='跳板機(jī)密碼',
ssh_username='跳板機(jī)用戶名',
remote_bind_address=('數(shù)據(jù)庫服務(wù)器地址' , '數(shù)據(jù)庫port')) as server: # A機(jī)器的配置
db = pymysql.connect(host='127.0.0.1', # 此處必須是是127.0.0.1
port=server.local_bind_port,
user='數(shù)據(jù)庫服務(wù)器用戶名',
passwd='數(shù)據(jù)庫服務(wù)器密碼',
charset = 'utf8',
db='待連接數(shù)據(jù)庫名')
# 使用 cursor() 方法創(chuàng)建一個(gè)游標(biāo)對象 cursor
# 設(shè)置游標(biāo)類型,默認(rèn)游標(biāo)類型為元祖形式
# 將游標(biāo)類型設(shè)置為字典形式
cursor = db.cursor(cursor=pymysql.cursors.DictCursor)
# 使用 execute() 方法執(zhí)行 SQL 查詢
cursor.execute(sql_select)
db.commit()
# 使用 fetchone() 方法獲取單條數(shù)據(jù).
data = cursor.fetchone()
print("通過mysql查詢到的數(shù)據(jù) : %s " % data)
# 關(guān)閉數(shù)據(jù)庫連接
db.close()
return data