您好,登錄后才能下訂單哦!
這篇文章主要介紹“Python基于ssh遠程怎么連接Mysql數據庫”,在日常操作中,相信很多人在Python基于ssh遠程怎么連接Mysql數據庫問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Python基于ssh遠程怎么連接Mysql數據庫”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
如果需要訪問遠程服務器的Mysql數據庫,但是該Mysql數據庫為了安全期間,安全措施設置為只允許本地連接(也就是你需要登錄到該臺服務器才能使用),其他遠程連接是不可以直接訪問,并且相應的端口也做了修改,那么就需要基于ssh來連接該數據庫。這種方式連接數據庫與Navicat里面界面化基于ssh連接一樣。
Navicat
連接數據庫
如果要連接Mysql,首先需要安裝pymysql
pip install pymysql
安裝基于ssh的庫sshtunnel
pip install sshtunnel #當前最新 0.3.1版
建議安裝最新的sshtunnel庫,舊版本庫有一些bug
基于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數據庫”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。