日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

php 跳板机连接mysql,使用python如何通过跳板机连接MySQL数据库

發(fā)布時間:2024/7/23 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 跳板机连接mysql,使用python如何通过跳板机连接MySQL数据库 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

生產(chǎn)環(huán)境中,為了安全起見,大多數(shù)的數(shù)據(jù)庫是無法在本地直接訪問的,需要先連接跳板機,然后通過跳板機訪問。創(chuàng)業(yè)天下測試數(shù)據(jù)庫也是采用這種方法連接數(shù)據(jù)的,那么我們應(yīng)該怎么通過Python去連接數(shù)據(jù)庫呢,代碼如下:

import pymysql

from sshtunnel import SSHTunnelForwarder

from common.log import *

from config.globalparameter import private_key_file, SqlConfig

class MysqlDB(object):

def __init__(self):

self.server = None

self.conn = None

self.cur = None

def start_server(self):

"""

創(chuàng)建連接對象

:return:

"""

self.server = SSHTunnelForwarder(

(SqlConfig["sshIP"], SqlConfig["sshPort"]), # 跳板機的配置

ssh_pkey=private_key_file,

ssh_username=SqlConfig["sshUserName"],

remote_bind_address=(SqlConfig["dbHost"], SqlConfig["dbPort"])) # 數(shù)據(jù)庫的配置

self.server.start() # 連接跳板機服務(wù)

self.conn = pymysql.connect(host='127.0.0.1', # 此處必須是127.0.0.1

port=self.server.local_bind_port,

user=SqlConfig["dbUser"],

passwd=SqlConfig["dbPasswd"],

db=SqlConfig["dbName"])

self.cur = self.conn.cursor(cursor=pymysql.cursors.DictCursor) # 創(chuàng)建游標對象,指定數(shù)據(jù)類型為字典,將打印key,value

def select(self, sql):

"""

執(zhí)行查詢sql,執(zhí)行成功返回結(jié)果,否則返回False,

:param sql: 執(zhí)行的sql語句

:return:

"""

self.start_server()

try:

count = self.cur.execute(sql) # 執(zhí)行sql語句

if count > 0:

data_db = self.cur.fetchall() # 獲取數(shù)據(jù)

logger.info("Select succeeded!")

else:

logger.info("Select empty!")

data_db = False

except pymysql.Error as e:

data_db = False

logger.error("Select error:%s" % e)

finally:

self.cur.close()

self.conn.close()

self.server.close()

logger.info("All server closed")

return data_db

if __name__ == '__main__':

sql = "select user_name from `cytx_user_info` where telephone = 15229067460"

conn = MysqlDB()

value = conn.select(sql)[0]["user_name"]

print(value)

說明:

1:因為跳板機是通過密鑰連接的,所以需要ssh_pkey參數(shù),值是密鑰的路徑,如果需要通過密碼連接,將該參數(shù)換成ssh_password即可

2:SSHTunnelForwarder方法返回的server對象必須調(diào)用start()方法后才可以正常使用

3:在連接MySQL時,connect()方法的參數(shù)中的host必須為127.0.0.1

4:導(dǎo)入的private_key_file,和SqlConfig分別是密鑰存放的路徑及數(shù)據(jù)庫連接的配置信息

5:執(zhí)行完sql語句后使用finally來關(guān)閉連接服務(wù)

6:導(dǎo)入sshtunnel 模塊如果報下面的錯誤,請安裝這個工具:鏈接:https://pan.baidu.com/s/1cWfjEsCpEFCJ42bLAGt9xg

提取碼:ABCD ,因為這個模塊部分代碼需要c++編譯環(huán)境

7:如果還是導(dǎo)入失敗,嘗試升級下你的pip版本:python -m pip install --upgrade pip

總結(jié)

以上是生活随笔為你收集整理的php 跳板机连接mysql,使用python如何通过跳板机连接MySQL数据库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。