目录

  • 一、问题需求
  • 二、解决办法

一、问题需求

对于有ssh通道设置的数据库连接,遇到已经有一段时间了。之前老是疑惑,使用Navicat之类的工具就可以连接数据库,但用python就是连接不到。之前写的博文【python连接PostgreSQL数据库获取数据的办法】怎么灰事,就不适用了。今日有空,把这个问题拉出来,解决一下:对于设置有ssh通道的数据库,该怎么用python来连接?

二、解决办法

从网上看了一大圈,尝试了好几篇博文提供的方法,都没有达到自己想要的结果。最后,发现了一篇有用的博文1,借助它的说明,终于成功连接。回顾一下,ssh有点像堡垒机,或者说第三方,博文【python连接PostgreSQL数据库获取数据的办法】介绍的这些连接方式,可以认为连接数据库,只有两方。现在多了一个中间方,从而来连接你和数据库。可以参考通过Navicat连接数据库的界面比较形象化得知。

python提供了很好的包工具,可以快速实现这种设置了ssh通道的数据库的连接。你可能还没有需要的包:sshtunnel,安装方式很简单的:

pip install --user sshtunnel

如果你觉得安装慢,那就可以用这种方式:

pip install sshtunnel -i https://pypi.douban.com/simple

详细介绍可以参考博文【使用pip install xxxx库 命令安装速度太慢解决小妙招】

完成上述操作,具体连接方式,请参考下方的具体实现方式,及备注信息。

## python通过ssh通道连接PostgreSQLfrom sshtunnel import SSHTunnelForwarder
import psycopg2
import pandas as pdserver = SSHTunnelForwarder(# 指定ssh登录的跳转机的addressssh_address_or_host=('ssh_ip', '端口号'),# 分别对应填写上图中的 1 , 2 位置的参数ssh_username='ssh_username', # 对应上图的 3 位置的参数,即ssh用户名#设置密钥ssh_password = 'ssh_password', # 对应上图的 4 位置的参数,即ssh用户密码# 设置数据库服务地址及端口remote_bind_address=('database_ip' , '端口号')) # 要连接的数据库地址、端口号,分别对应下图中的 1,2 位置的参数
server.start()
conn = psycopg2.connect(database = 'databasename', # 要连接的数据库名,对应下图的 3 位置的参数user = 'username',     # 要连接的数据库的用户名,对应下图的 4 位置的参数password = 'password', #要连接的数据库的用户密码,对应下图的 5 位置的参数host = '127.0.0.1',    # 此处必须是是127.0.0.1port = server.local_bind_port)sql = 'select * from mgmt_etl.e_data_intfc '
e_data_intfc = pd.read_sql(sql,con = conn)e_data_intfc.head()

使用完后,切记要将服务关闭!

server.close()

【备注】:代码或图中的信息皆为自己临时随手填写,以便和代码中相关信息映射参考。实际连接,请使用自己的相关库信息进行替代即可。欢迎下方留言,交流学习。



  1. python 使用pymysql模块通过ssh隧道连接mysql(python、mysql、ssh) ↩︎

python通过ssh通道连接PostgreSQL数据库(mysql等类同)相关推荐

  1. 使用Navicat进行ssh通道连接MySQL数据库(亲测可行)

    前些天尝试用SSH通道进行远程数据库的链接,走了不少弯路,后来经过摸索与请教,最终连接成功.现在分享给大家! 首先,你得有一个Navicat,这个不用多说 第二步,打开Navicat点击连接按钮.这个 ...

  2. Python连接postgresql数据库入门

    关于Python及pycharm的安装参考:1. python+pycharm 安装及测试_Hehuyi_In的博客-CSDN博客_pycharm安装成功测试 首先需要安装 psycopg2模块(已经 ...

  3. python连接postgresql数据库

    连接postgresql数据库 pip install psycopg2 ## 导入psycopg2包 import psycopg2 ## 连接到一个给定的数据库 conn = psycopg2.c ...

  4. jdbc postgresql mysql_jdbc无法连接postgresql数据库

    使用jdbc连接postgresql数据库时报错如下: org.mybatis.spring.MyBatisSystemException: nested exception is org.apach ...

  5. Entity Freamwork 6连接PostgreSql数据库

    原文 Entity Freamwork 6连接PostgreSql数据库 开发环境 VS 2015  Update 1   Postgre Sql 9.4 使用过程 1.使用Nuget在项目中添加对E ...

  6. java编译POSTGRESQL_Java连接PostgreSQL数据库(安装环境 + 简易测试代码)

    --[楼主比较啰嗦, 会列出几个异常情况以供参考]-- 1, 安装环境 1.0 Win7 32位 1.2 编译器:  Spring Tool Suite 3.7.1  官网下载地址:http://sp ...

  7. typescript-koa-postgresql 实现一个简单的rest风格服务器 —— 连接 postgresql 数据库...

    接上一篇,这里使用 sequelize 来连接 postgresql 数据库 1.安装 sequelize,数据库驱动 pg yarn add sequelize sequelize-typescri ...

  8. 视频教程--ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库

    说好的给园子里的朋友们录制与<ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库> 这篇博客相对应的视频,由于一个月一来没有时 ...

  9. Navicat 用ssh通道连接时总是报错 (报错信息:SSH:expected key exchange group packet form serve...

    转:https://blog.csdn.net/qq_27463323/article/details/76830731 之前下了一个Navicat 11.0 版本 用ssh通道连接时总是报错 (报错 ...

最新文章

  1. Linux内置的审计跟踪工具:last命令
  2. 计算机网络有限制,计算机网络中软件限制策略的应用规则有哪些
  3. ubuntu系统home(主文件夹)中的内容在桌面的显示
  4. has_a php,PHP has encountered a Stack overflow问题解决方法
  5. 公司转型微服务,真的有必要吗?
  6. 自定义日历控android,Android 一个日历控件的实现小记
  7. osx+配置+php扩展,Mac系统升级到10.9(mavericks)时安装php扩展问题解决
  8. springmvc源码阅读3--dispatcherServlet reqeust的执行流程
  9. 海底捞、百果园、大娘水饺凭什么可以疯狂扩张门店?
  10. arcgis api for js之echarts开源js库实现地图统计图分析
  11. 2013Esri全球用户大会QA之ArcGIS未来发展
  12. 仿节奏大师java_HelloCpp 仿节奏大师Android游戏版本,只实现了击键功能,可以给大家启发. 238万源代码下载- www.pudn.com...
  13. 将pdf转成图片时,文字没法显示
  14. log4j2远程执行漏洞原理以及解决方案
  15. 用C#调整Excel 的行高和列宽
  16. php网页怎么和PLC通讯,plc网络通讯方式和协议
  17. 一中OJ #3514 礼物 | 暴搜 + 剪枝 | 解题报告
  18. android设置图片不可点击,Android 点击图片设置相关的响应事件
  19. 敬业签苹果手机便签如何使用本机号码一键登录?
  20. Azkaban的使用

热门文章

  1. pycharm 把文件夹设置为包
  2. python-docx结合lxml读取word文档段落格式、字体格式等信息
  3. 02:一文全解:利用谷歌深度学习框架Tensorflow识别手写数字图片(初学者篇)
  4. “斜杠青年”多巴胺,这次把手伸进了梦里
  5. Intellij IDEA 在win10 中输入法的输出框不跟随
  6. Ubuntu16.04下安装MATLAB 2016b!完美运行
  7. 达达-京东到家完成新一轮5亿美金融资,沃尔玛、京东分别增持
  8. 侍魂胧月传说服务器维护中,侍魂胧月传说手游3月2日停机维护更新公告
  9. deepstream6.1-YOLOv5部署
  10. Context都没弄明白,还怎么做Android开发?