Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Đường hầm SSH từ Python sẽ tự động đóng

Theo steven-rumbalski của bình luận ở trên:

Thay thế: with SSHTunnelForwarder(...) as server
Với: server = SSHTunnelForwarder(...)
Sau đó quấn: server.start() ... server.stop()
xung quanh mã bạn muốn được gửi qua Đường hầm SSH.

Đây là mã đã chuyển đổi:

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. cách thực thi lệnh mysql DELIMITER

  2. Thiết lập cơ sở dữ liệu lớn trong MySQL để phân tích trong R

  3. MySQL - Sử dụng kết quả thủ tục được lưu trữ để xác định câu lệnh IN

  4. Cách kiểm tra Apostrophe với mệnh đề where bằng mysql

  5. Chuyển đổi SQL sang SQL alchemy