Mysql
 sql >> база данни >  >> RDS >> Mysql

SSH тунел от Python се затваря автоматично

Според steven-rumbalski коментар на по-горе:

Замяна: with SSHTunnelForwarder(...) as server
С: server = SSHTunnelForwarder(...)
След това увийте: server.start() ... server.stop()
около кода, който искате да бъде изпратен през SSH тунела.

Ето конвертирания код:

import pymysql, shlex, shutil, subprocess
import logging
import sshtunnel
from sshtunnel import SSHTunnelForwarder
import iot_config as cfg

def OpenSSHTunnel():
    global server
    sshtunnel.DEFAULT_LOGLEVEL = logging.DEBUG
    server = SSHTunnelForwarder(
        (cfg.sshconn['host'], cfg.sshconn['port']),
        ssh_username = cfg.sshconn['user'],
        ssh_private_key = cfg.sshconn['private_key_loc'],
        ssh_private_key_password = cfg.sshconn['private_key_passwd'],
        remote_bind_address = ('127.0.0.1', 3306)
    )

def OpenRemoteDB():
    global remotecur, remotedb
    remotedb = None
    remotedb = pymysql.connect(
        host='127.0.0.1',
        user=cfg.remotedbconn['user'],
        passwd=cfg.remotedbconn['passwd'],
        db=cfg.remotedbconn['db'],
        port=server.local_bind_port
    )
    remotecur = remotedb.cursor()
    print("Checkpoint 1")

def SyncActions():
    print("Checkpoint 2")
    # this should now work as expected
    remotecur.execute("SELECT ActionID, Description FROM cmAction")
    for r in remotecur:
        print(r)

# Main program starts here
OpenSSHTunnel()
server.start()
OpenRemoteDB()
SyncActions()
server.stop()



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:Намерете липсващи дати между диапазон от време

  2. Как да коригирам MySQL грешка 1064

  3. Mysql - изберете идентификатори, които отговарят на всички тагове

  4. Невалидна стойност по подразбиране за полето за времеви отпечатък „create_date“.

  5. поръчай по.... номера? Помогнете ми да сортирам ip адресите