程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python基於ssh遠程連接Mysql數據庫操作

編輯:Python

目錄

背景

安裝支持庫

連接Mysql

自定義查詢函數

背景

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

Navicat

連接數據庫

安裝支持庫

如果要連接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加載txt數據亂碼問題升級版解決方法

Python文件打包成exe可執行程序

以上就是Python基於ssh遠程連接Mysql數據庫操作的詳細內容,更多關於Python ssh遠程連接Mysql的資料請關注軟件開發網其它相關文章!



  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved