python – Psycopg2访问远程主机上的PostgreSQL数据库,无需手动打开ssh隧道

前端之家收集整理的这篇文章主要介绍了python – Psycopg2访问远程主机上的PostgreSQL数据库,无需手动打开ssh隧道前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
用于访问远程服务器上的数据库的标准过程Postgresql首先创建一个ssh隧道,如下所示:
ssh username1@remote.somewhere.com -L 5432:localhost:5432 -p 222

然后从另一个shell在python中运行我的查询

conn = psycopg2.connect("host=localhost" + " dbname=" +
                         conf.dbname + " user=" + conf.user + 
                         " password=" + conf.password)

cur = conn.cursor()

cur.execute(query)

创建隧道后,这段python代码可以很好地工作.但是,我希望psycopg2已经打开SSH隧道或“以某种方式”到达远程数据库而无需在我的localhost上重定向它.

用psycopg2可以做到这一点吗?

否则可能在我的python代码中打开ssh隧道?

如果我使用:

os.system("ssh username1@remote.somewhere.com -L 5432:localhost:5432 -p 222")

shell将被重定向到远程主机,阻止主线程的执行.

解决方法

你也可以使用 sshtunnel,短而甜:
from sshtunnel.sshtunnel import SSHTunnelForwarder
PORT=5432
with SSHTunnelForwarder((REMOTE_HOST,REMOTE_SSH_PORT),ssh_username=REMOTE_USERNAME,ssh_password=REMOTE_PASSWORD,remote_bind_address=('localhost',PORT),local_bind_address=('localhost',PORT)):
    conn = psycopg2.connect(...)

猜你在找的Python相关文章