Tôi không biết liệu điều này có hữu ích hay không, nhưng tôi cũng phải kết nối với cơ sở dữ liệu PostgreSQL thông qua đường hầm SSH. Tôi đã thành công khi kết nối bằng mã của bạn với một số sửa đổi:
import psycopg2
from sshtunnel import SSHTunnelForwarder
try:
with SSHTunnelForwarder(
('<server ip address>', 22),
#ssh_private_key="</path/to/private/ssh/key>",
### in my case, I used a password instead of a private key
ssh_username="<server username>",
ssh_password="<mypasswd>",
remote_bind_address=('localhost', 5432)) as server:
server.start()
print "server connected"
params = {
'database': '<dbname>',
'user': '<dbusername>',
'password': '<dbuserpass>',
'host': 'localhost',
'port': server.local_bind_port
}
conn = psycopg2.connect(**params)
curs = conn.cursor()
print "database connected"
except:
print "Connection Failed"
Sau khi thêm server.start()
, mã hoạt động tốt. Hơn nữa, các dấu phẩy ngược bị thiếu sau khi 'cơ sở dữ liệu được kết nối'. Tôi hy vọng điều này có thể hữu ích cho bạn, cảm ơn bạn đã chia sẻ mã của mình!