Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Terowongan SSH dari Python ditutup secara otomatis

Sesuai steven-rumbalski komentar di atas:

Ganti: with SSHTunnelForwarder(...) as server
Dengan: server = SSHTunnelForwarder(...)
Kemudian bungkus: server.start() ... server.stop()
seputar kode yang ingin dikirim melalui SSH Tunnel.

Berikut adalah kode yang dikonversi:

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. kerangka kerja zend bergabung dengan 3 tabel

  2. Perhitungan SQL untuk menemukan perbedaan waktu

  3. MySQL:Meja panjang vs meja lebar

  4. Mysql meminta dua tabel &mendapatkan data berdasarkan tanggal atau pengguna

  5. Bidang Jooq LocalDateTime menggunakan zona waktu sistem alih-alih zona waktu sesi