对python 通过ssh访问数据库的实例详解


Posted in Python onFebruary 19, 2019

通常,为了安全性,数据库只允许通过ssh来访问。例如:mysql数据库放在服务器A上,只允许数据库B来访问,这时,我们需要用机器C去访问数据库,就需要用C通过ssh连接B,再访问A。

通过pymysql连接mysql:

import pymysql
from sshtunnel import SSHTunnelForwarder

with SSHTunnelForwarder(
  (sshServerB_ip, sshServerB_port), # B机器的配置
  ssh_password=sshServerB_pwd,
  ssh_username=sshServerB_usr,
  remote_bind_address=(databaseA_ip, databaseA_port)) as server: # A机器的配置

 db_connect = pymysql.connect(host='127.0.0.1', # 此处必须是是127.0.0.1
         port=server.local_bind_port,
         user=databaseA_usr,
         passwd=databaseA_pwd,
         db=databaseA_db)

 cur = db_connect.cursor()
 cur.execute('call storedProcedure')
 db_connect.commit()

以下是自己进行事务管理,并使用peewee框架:

from peewee import *
from playhouse.db_url import connect
from sshtunnel import SSHTunnelForwarder

server = SSHTunnelForwarder(
  (sshServerB_ip, sshServerB_port), # B机器的配置
  ssh_password=sshServerB_pwd,
  ssh_username=sshServerB_usr,
  remote_bind_address=(databaseA_ip, databaseA_port)) # A机器的配置
server.start()
destination_lib = connect('mysql://%s:%s@127.0.0.1:%d/%s' % (databaseA_usr, databaseA_pwd, server.local_bind_port, databaseA_db))
'''
your code to operate the databaseA
'''
server.close()

以上这篇对python 通过ssh访问数据库的实例详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python3中初学者应会的一些基本的提升效率的小技巧
Mar 31 Python
讲解Python中运算符使用时的优先级
May 14 Python
Python处理JSON数据并生成条形图
Aug 05 Python
Scrapy的简单使用教程
Oct 24 Python
Python列表推导式、字典推导式与集合推导式用法实例分析
Feb 07 Python
Python 数据处理库 pandas 入门教程基本操作
Apr 19 Python
用Python调用win命令行提高工作效率的实例
Aug 14 Python
基于Python实现拆分和合并GIF动态图
Oct 22 Python
python使用paramiko实现ssh的功能详解
Mar 06 Python
python数据处理——对pandas进行数据变频或插值实例
Apr 22 Python
python 绘制正态曲线的示例
Sep 24 Python
win10+anaconda安装yolov5的方法及问题解决方案
Apr 29 Python
python 通过SSHTunnelForwarder隧道连接redis的方法
Feb 19 #Python
深入理解Django-Signals信号量
Feb 19 #Python
python利用跳板机ssh远程连接redis的方法
Feb 19 #Python
Python获取Redis所有Key以及内容的方法
Feb 19 #Python
Python元组常见操作示例
Feb 19 #Python
python redis 删除key脚本的实例
Feb 19 #Python
Python列表切片操作实例总结
Feb 19 #Python
You might like
冰滴咖啡制作步骤
2021/03/03 冲泡冲煮
php 字符转义 注意事项
2009/05/27 PHP
基于PHP选项与信息函数的使用详解
2013/05/10 PHP
调试PHP程序的多种方法介绍
2014/11/06 PHP
PHP生成随机密码方法汇总
2015/08/27 PHP
超轻量级的基于jquery的三级展开列表
2011/04/26 Javascript
js操纵跨frame的三级联动select下拉选项实例介绍
2013/05/19 Javascript
javascipt:filter过滤介绍及使用
2014/09/10 Javascript
JS+CSS实现自动切换的网页滑动门菜单效果代码
2015/09/14 Javascript
JavaScript的History API使搜索引擎抓取AJAX内容
2015/12/07 Javascript
JavaScript实战之菜单特效
2016/08/16 Javascript
AngularJS轻松实现双击排序的功能
2016/08/30 Javascript
jQuery实现获取元素索引值index的方法
2016/09/18 Javascript
通过Ajax使用FormData对象无刷新上传文件方法
2016/12/08 Javascript
AngularJS表单提交实例详解
2017/02/18 Javascript
Vue实现路由跳转和嵌套
2017/06/20 Javascript
require.js中的define函数详解
2017/07/10 Javascript
Js数组扁平化实现方法代码总汇
2020/11/11 Javascript
python实现得到一个给定类的虚函数
2014/09/28 Python
python实现分析apache和nginx日志文件并输出访客ip列表的方法
2015/04/04 Python
Java及python正则表达式详解
2017/12/27 Python
python删除不需要的python文件方法
2018/04/24 Python
查看端口并杀进程python脚本代码
2019/12/17 Python
PyCharm无法引用自身项目解决方式
2020/02/12 Python
前端面试必备之html5的新特性
2017/09/05 HTML / CSS
伦敦高级内衣品牌:Agent Provocateur(大内密探)
2016/08/23 全球购物
extern在函数声明中是什么意思
2014/01/19 面试题
计算机相关的自我评价
2014/01/15 职场文书
学年自我鉴定
2014/01/16 职场文书
大学生校园创业计划书
2014/02/08 职场文书
英文推荐信格式范文
2014/05/09 职场文书
武当山导游词
2015/02/03 职场文书
2015年营销工作总结范文
2015/04/23 职场文书
2016年质量月活动总结报告
2016/04/05 职场文书
z-index不起作用
2021/03/31 HTML / CSS
提高系统的吞吐量解决数据库重复写入问题
2022/04/23 MySQL