用于访问远程服务器上的数据库的标准过程Postgresql首先创建一个ssh隧道,如下所示:
ssh username1@remote.somewhere.com -L 5432:localhost:5432 -p 222
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(...)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。