91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python基于ssh遠程怎么連接Mysql數據庫

發布時間:2022-06-23 13:49:02 來源:億速云 閱讀:171 作者:iii 欄目:開發技術

這篇文章主要介紹“Python基于ssh遠程怎么連接Mysql數據庫”,在日常操作中,相信很多人在Python基于ssh遠程怎么連接Mysql數據庫問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Python基于ssh遠程怎么連接Mysql數據庫”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

背景

如果需要訪問遠程服務器的Mysql數據庫,但是該Mysql數據庫為了安全期間,安全措施設置為只允許本地連接(也就是你需要登錄到該臺服務器才能使用),其他遠程連接是不可以直接訪問,并且相應的端口也做了修改,那么就需要基于ssh來連接該數據庫。這種方式連接數據庫與Navicat里面界面化基于ssh連接一樣。

Python基于ssh遠程怎么連接Mysql數據庫

Navicat

Python基于ssh遠程怎么連接Mysql數據庫

連接數據庫

安裝支持庫

  • 如果要連接Mysql,首先需要安裝pymysql

pip install pymysql
  • 安裝基于ssh的庫sshtunnel

pip install sshtunnel    #當前最新 0.3.1版

建議安裝最新的sshtunnel庫,舊版本庫有一些bug

連接Mysql

基于ssh連接Mysql可以查看sshtunnel的文檔,里面有一些案例

with SSHTunnelForwarder(
        ('192.168.1.1', 2222),
        ssh_password='123456',
        ssh_username='root',
        remote_bind_address=('127.0.0.1', 3306)) as server:
    print('SSH連接成功')
    conn = pymysql.connect(host='127.0.0.1',
                           port=server.local_bind_port,
                           user='root',
                           database='data',
                           charset='utf8')
    print('mysql數據庫連接成功')
    cursor = conn.cursor()
    ...  #獲取數據操作,此處省略
    cursor.close()
    conn.close()

自定義查詢函數

可以對上面的連接進行封裝為一個函數,方便其他地方使用

def mysql_ssh(sql,args=None):
    with SSHTunnelForwarder(
            ('192.168.1.1', 2222),
            ssh_password='123456',
            ssh_username='root',
            remote_bind_address=('127.0.0.1', 3306)) as server:
        print('SSH連接成功')
        conn = pymysql.connect(host='127.0.0.1',
                               port=server.local_bind_port,
                               user='root',
                               database='data',
                               charset='utf8')
        print('mysql數據庫連接成功')
        cursor = conn.cursor()
        print('游標獲取成功')
        try:
            print(f'執行查詢語句:{sql}  參數:{args}')
            cursor.execute(sql,args)
            print('數據查詢成功')
            conn.commit()
            print('事務提交成功')
            datas = cursor.fetchall()
            success = True
        except:
            print('數據查詢失敗')
            datas = None
            success = False
        print('正在關閉數據庫連接')
        cursor.close()
        conn.close()
    return datas, success

注意點:

  • 在使用數據庫時,conn.commit()cursor.close()conn.close()這些一定要規范使用,防止不必要的bug

  • 傳入參數時建議用這種方式cursor.execute(sql,args),防止sql注入的風險

到此,關于“Python基于ssh遠程怎么連接Mysql數據庫”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

沅江市| 西平县| 铜梁县| 台州市| 寿宁县| 南靖县| 天祝| 北辰区| 襄汾县| 沙雅县| 浠水县| 平遥县| 三门峡市| 德令哈市| 会昌县| 海晏县| 巴马| 北京市| 长兴县| 台山市| 宁远县| 湄潭县| 中山市| 呈贡县| 金沙县| 榕江县| 宝丰县| 衡南县| 大余县| 灵寿县| 滦平县| 日土县| 定兴县| 进贤县| 辽阳县| 北安市| 泾川县| 星子县| 黎城县| 博罗县| 武威市|