python sshtunnel 簡單介紹
阿新 • • 發佈:2018-06-15
CA lose table rom row 登錄 int lena postgre
背景,公司的很多服務包括數據庫訪問都需要通過跳板機訪問,為日常工作及使用帶來了麻煩,特別數python直接操作數據更是麻煩了,所以一直想實現python 通過跳板機訪問數據庫的操作。
安裝
pip3.6 install sshtunnel
使用 sshtunnel 跳轉登錄數據庫
鏈接postgresql,其他數據類似
# FileName : pgconn.py # Author : Adil # DateTime : 2018/6/15 15:19 # SoftWare : PyCharm import paramiko import psycopg2from sshtunnel import SSHTunnelForwarder # 獲取密鑰 private_key = paramiko.RSAKey.from_private_key_file(‘/Users/yyj/.ssh/id_rsa‘) with SSHTunnelForwarder( # 指定ssh登錄的跳轉機的address ssh_address_or_host = (‘jumphost‘,22), # 設置密鑰 ssh_pkey = private_key, # 如果是通過密碼訪問,可以把下面註釋打開,將密鑰註釋即可。 #ssh_password = "password" # 設置用戶 ssh_username = ‘username‘, # 設置數據庫服務地址及端口 remote_bind_address= (‘dbhost‘,dbport)) as server: conn = psycopg2.connect(database=‘dbname‘, user=‘username‘, password=‘password‘, host=‘127.0.0.1‘, # 因為上面沒有設置 local_bind_address,所以這裏必須是127.0.0.1,如果設置了,取設置的值就行了。 port=server.local_bind_port) # 這裏端口也一樣,上面的server可以設置,沒設置取這個就行了 print(conn) cur = conn.cursor() # 執行查詢,查看結果,驗證數據庫是否鏈接成功。 cur.execute("select * from t_table_data limit 1") rows = cur.fetchone() print(rows) conn.close()
python sshtunnel 簡單介紹