最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python3 使用ssh隧道連接mysql的操作

 更新時間:2020年12月05日 14:55:55   作者:鶯聲門徑  
這篇文章主要介紹了python3 使用ssh隧道連接mysql的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

我就廢話不多說了,大家還是直接看代碼吧~

import pymysql
from sshtunnel import SSHTunnelForwarder
import pymysql.cursors #以dict形式輸出

def dbconnect_ssh(ssh_host,ssh_port,keyfile,ssh_user,db_host,db_name,sql,db_port,db_user,db_passwd):
 with SSHTunnelForwarder(
   (ssh_host, ssh_port),
   #ssh_password="sshpasswd",
   ssh_pkey=keyfile,
   ssh_username=ssh_user,
   remote_bind_address=(db_host, db_port)
 ) as server:

  db = pymysql.connect(
   host='127.0.0.1',
   port=server.local_bind_port,
   user=db_user,
   passwd=db_passwd,
   db=db_name,
   charset="utf8",
   cursorclass=pymysql.cursors.DictCursor)

  cursor = db.cursor()

  try:
   cursor.execute(sql)
   data = cursor.fetchall()
   db.commit()
  except:
   db.rollback()

  collect = []
  for result in data:
   collect.append(result)

  db.close()
  cursor.close()

  return collect

if __name__ == "__main__":
 ssh_host = "10.10.2.13"   #SSH服務(wù)器地址
 ssh_port = 22     #SSH端口
 keyfile = xxxx.key" #SSH密鑰
 ssh_user = "root"   #SSH用戶名
 db_host = "127.0.0.1"  #數(shù)據(jù)庫地址
 db_name = 'DBname'    #數(shù)據(jù)庫名
 sql = 'show tables;'  #SQL
 db_port = 3306     #數(shù)據(jù)庫端口
 db_user = 'root'    #數(shù)據(jù)庫用戶名
 db_passwd = '33333'   #數(shù)據(jù)庫密碼
 result = dbconnect_ssh(ssh_host,ssh_port,keyfile,ssh_user,db_host,db_name,sql,db_port,db_user,db_passwd)
 print (result)

補充知識:Python 使用SSHTunnel 連接內(nèi)網(wǎng)mysql數(shù)據(jù)庫

準備:

主要模塊 sshtunnel, pip install sshtunnel

其余模塊 pymysql,playhouse,configparser

簡介:

這里用的是數(shù)據(jù)庫連接池和自動的鏈接斷開重連機制,其實最主要的就是sshtunner的建立,所以可以只看service建立的 部分

配置文件:

[mysql]
database=ad_insight
max_connections=10
stale_timeout=1000
host=localhost
user=數(shù)據(jù)庫用戶名
password=數(shù)據(jù)庫密碼
port=3306

python 代碼

from playhouse.pool import PooledMySQLDatabase
from playhouse.shortcuts import ReconnectMixin
from configparser import ConfigParser
from sshtunnel import SSHTunnelForwarder
 
class RetryMySQLDatabase(ReconnectMixin,PooledMySQLDatabase):
 _instance = None
 
 @staticmethod
 def get_db_instance():
  if not RetryMySQLDatabase._instance:
   server = SSHTunnelForwarder(
    ssh_address_or_host='ssh域名或者地址',
    ssh_port=ssh端口,
    ssh_password='ssh密碼',
    ssh_username='ssh名稱',
    remote_bind_address=('數(shù)據(jù)庫地址',數(shù)據(jù)庫端口)
 
   )
   server.start()
   config = ConfigParser()
   config.read("./default.cfg",encoding="utf-8")
   RetryMySQLDatabase._instance = RetryMySQLDatabase(
    str(config['mysql']['database']),
    max_connections=int(config['mysql']['max_connections']),
    stale_timeout=int(config['mysql']['stale_timeout']),
    host=str(config['mysql']['host']),
    user=str(config['mysql']['user']),
    password=str(config['mysql']['password']),
    port=server.local_bind_port
    # port=int(config['mysql']['port'])
   )
  return RetryMySQLDatabase._instance

其實主要是在server對象的建立和server.start

希望能給大家一個參考,本人親測有效。也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解python?flask是如何預防CSRF攻擊

    詳解python?flask是如何預防CSRF攻擊

    CSRF(Cross-site?request?forgery)攻擊是一種常見的網(wǎng)絡(luò)安全漏洞,它可以通過欺騙用戶執(zhí)行惡意請求來攻擊?Web?應用程序,本篇文章將介紹python?flask是如何預防CSRF攻擊,需要的朋友可以參考下
    2024-04-04
  • python實現(xiàn)自動化的sql延時注入

    python實現(xiàn)自動化的sql延時注入

    這篇文章主要為大家詳細介紹了如何基于python實現(xiàn)自動化的sql延時注入腳本,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-12-12
  • python3實現(xiàn)UDP協(xié)議的服務(wù)器和客戶端

    python3實現(xiàn)UDP協(xié)議的服務(wù)器和客戶端

    這篇文章主要為大家詳細介紹了python3實現(xiàn)UDP協(xié)議的服務(wù)器和客戶端,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Python寫的一個定時重跑獲取數(shù)據(jù)庫數(shù)據(jù)

    Python寫的一個定時重跑獲取數(shù)據(jù)庫數(shù)據(jù)

    本文給大家分享基于python寫的一個定時重跑獲取數(shù)據(jù)庫數(shù)據(jù)的方法,非常不錯,具有參考借鑒價值,需要的朋友參考下
    2016-12-12
  • Python學習之基礎(chǔ)語法介紹

    Python學習之基礎(chǔ)語法介紹

    大家好,本篇文章主要講的是Python學習之基礎(chǔ)語法介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • 在Python的Django框架中用流響應生成CSV文件的教程

    在Python的Django框架中用流響應生成CSV文件的教程

    這篇文章主要介紹了在Python的Django框架中用流響應生成CSV文件的教程,作者特別講到了防止CSV文件中的中文避免出現(xiàn)亂碼等問題,需要的朋友可以參考下
    2015-05-05
  • Django 自動生成api接口文檔教程

    Django 自動生成api接口文檔教程

    今天小編就為大家分享一篇Django 自動生成api接口文檔教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • 如何使用OpenCV實現(xiàn)手勢音量控制

    如何使用OpenCV實現(xiàn)手勢音量控制

    今天來學習一下如何使用OpenCV實現(xiàn)手勢音量控制,本次實驗需要使用OpenCV和mediapipe庫進行手勢識別,并利用手勢距離控制電腦音量,感興趣的朋友跟隨小編一起看看吧
    2023-11-11
  • django的分頁器Paginator 從django中導入類

    django的分頁器Paginator 從django中導入類

    這篇文章主要介紹了django的分頁器Paginator 從django中導入類,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • scrapy spider的幾種爬取方式實例代碼

    scrapy spider的幾種爬取方式實例代碼

    這篇文章主要介紹了scrapy spider的幾種爬取方式實例代碼,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01

最新評論

彰化县| 永新县| 民丰县| 天祝| 安溪县| 平江县| 渝中区| 凤阳县| 濮阳县| 金乡县| 达拉特旗| 开封市| 乐都县| 专栏| 南投市| 大关县| 京山县| 普兰店市| 台安县| 阿瓦提县| 西昌市| 屏南县| 汪清县| 息烽县| 永新县| 沙田区| 烟台市| 阿克陶县| 武穴市| 北川| 岳普湖县| 仙居县| 临洮县| 新巴尔虎右旗| 大新县| 建始县| 米脂县| 南川市| 台湾省| 柳河县| 刚察县|