加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-16 21:31:33 所属栏目:Python 来源:网络整理
导读:用于访问远程服务器上的数据库的标准过程PostgreSQL首先创建一个ssh隧道,如下所示: ssh username1@remote.somewhere.com -L 5432:localhost:5432 -p 222 然后从另一个shell在python中运行我的查询: conn = psycopg2.connect("host=localhost" + " dbname="
用于访问远程服务器上的数据库的标准过程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(...)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读