sqlalchemy和pymysql通过ssh连接远程mysql服务器
首先需要一个模块sshtunnel,如果没有直接pip install sshtunnel
其实连个连接方式非常像:
pymysql连接方式:
import pymysql
from sshtunnel import SSHTunnelForwarder ssh_host = "" # 堡垒机ip地址或主机名
ssh_port = 22 # 堡垒机连接mysql服务器的端口号,一般都是22,必须是数字
ssh_user = "" # 这是你在堡垒机上的用户名
ssh_password = "" # 这是你在堡垒机上的用户密码
mysql_host = "localhost" # 这是你mysql服务器的主机名或ip地址
mysql_port = 3306 # 这是你mysql服务器上的端口,3306,mysql就是3306,必须是数字
mysql_user = "" # 这是你mysql数据库上的用户名
mysql_password = "" # 这是你mysql数据库的密码
mysql_db = "" # mysql服务器上的数据库名 with SSHTunnelForwarder(
(ssh_host, ssh_port),
ssh_username=ssh_user,
ssh_password=ssh_password,
remote_bind_address=(mysql_host, mysql_port)) as server:
conn = pymysql.connect(host=mysql_host,
port=server.local_bind_port,
user=mysql_user,
passwd=mysql_password,
db=mysql_db) cursor = conn.cursor()
cursor.execute("select * from user")
row_1 = cursor.fetchone()
print(row_1, type(row_1))
# 获取前n行数据
# row_2 = cursor.fetchmany(3)
# 获取所有数据
# row_3 = cursor.fetchall()
conn.commit()
cursor.close()
conn.close()
如果给pymysql加一个事务处理,可以看这里https://www.cnblogs.com/woider/p/5926744.html
sqlalchemy连接方式:
from sshtunnel import SSHTunnelForwarder
from sqlalchemy import Column, String, Integer, create_engine, event
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.exc import DisconnectionError ssh_host = "" # 堡垒机ip地址或主机名
ssh_port = 22 # 堡垒机连接mysql服务器的端口号,一般都是22,必须是数字
ssh_user = "" # 这是你在堡垒机上的用户名
ssh_password = "" # 这是你在堡垒机上的用户密码
mysql_host = "" # 这是你mysql服务器的主机名或ip地址
mysql_port = 3306 # 这是你mysql服务器上的端口,3306,mysql就是3306,必须是数字
mysql_user = "" # 这是你mysql数据库上的用户名
mysql_password = "" # 这是你mysql数据库的密码
mysql_db = "" # mysql服务器上的数据库名 Base = declarative_base() class Phones(Base):
__tablename__ = 'phones'
id = Column(Integer, primary_key=True)
name = Column(String(32)) def checkout_listener(dbapi_con, con_record, con_proxy):
try:
try:
dbapi_con.ping(False)
except TypeError:
dbapi_con.ping()
except dbapi_con.OperationalError as exc:
if exc.args[0] in (2006, 2013, 2014, 2045, 2055):
raise DisconnectionError()
else:
raise with SSHTunnelForwarder(
(ssh_host, ssh_port),
ssh_username=ssh_user,
ssh_password=ssh_password,
remote_bind_address=(mysql_host, mysql_port)
) as server:
# server.start() # ssh通道服务启动,用了with语句会自己启动
local_port = str(server.local_bind_port)
engine = create_engine(
'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(mysql_user, mysql_password, '127.0.0.1', local_port,mysql_db),
pool_size=100,
pool_recycle=3600) event.listen(engine, 'checkout', checkout_listener) # 防止报连接池相关的错误
Base.metadata.create_all(engine) # 检测文件中所有继承了Base类的类,在mysqld中建立所有的表,类就是表
Session = sessionmaker(bind=engine)
session = Session()
sqlalchemy和pymysql通过ssh连接远程mysql服务器的更多相关文章
- sqlalchemy通过ssh连接远程mysql服务器
首先需要一个模块sshtunnel,如果没有直接pip install sshtunnel from sshtunnel import SSHTunnelForwarder from sqlalche ...
- ssh连接远程linux服务器
1.在百度搜索输入"putty"然后进行下载,下载后无需安装只需要在文件中找到"putty.exe"双击即可运行. 2.在"Host Name or ...
- Mac下如何用SSH连接远程Linux服务器,centos无法复制粘贴
CentOS 7.1安装完之后默认已经启动了ssh服务我们可以通过以下命令来查看ssh服务是否启动. 3.2查看22端口是否开放 #netstat -tnl 3.3查看ssh服务是否启动 #syste ...
- 第十一章 PhpMyAdmin连接远程mysql服务器---连接openwrt 703N服务器
//千万不要在你原来的那个phpmyadmin文件夹上操作~~~要复制一个新的进行操作,这样我们就可以同时使用本地和远程 一.下载phpmyadmin到本地 我使用的是windows下的集成WAM ...
- Mac下如何用SSH连接远程Linux服务器及Linux一些常用操作命令,更新中.....
1. 终端命令 a).打开Mac的命令终端,输入 sudo su 按回车 b).输入 ssh root@102.210.86.213 它会提示你输入密码,输入正确的密码之后,你就发现已经登陆成功了. ...
- Mac下如何用SSH连接远程Linux服务器
终端命令 a).打开Mac的命令终端 b).输入ssh -p 22 root@102.210.86.213 它会提示你输入密码,输入正确的密码之后,你就发现已经登陆成功了.(22: 端口号 root ...
- jmeter连接配置带跳板机(SSH)的mysql服务器
jmeter连接配置mysql服务器时,如果数据库服务器没有通过ssh连接,则只需要配置相应的jdbc参数就可以了,即请求域名或ip地址:3306,如果数据库服务器是通过SSH连接的,那需要通过中间远 ...
- Mac下ssh连接远程服务器时自动断开问题
在mac下使用securecrt通过ssh连接远程服务器时,总会一段时间没有动作后,ssh被自动断开.在windows下用xmanager貌似没有遇到过这个问题. 在网上找了解决方法如下: 客户端配置 ...
- Windows环境下,本地Oracle创建dblink连接远程mysql
前言 我的情况是,本地安装了oracle(安装完成后带有SQL Developer,不需要再安装instantclient),创建dblink去连接远程的mysql.有些朋友可能是 本地使用PL\SQ ...
随机推荐
- 接入渠道SDK时出现乙方SDK回调不起作用
使用activity.runOnUiThread(new Runnable() {} 方法去解决
- Docker 创建 Jira Core(Jira SoftWare) 7.12.3 中文版
目录 目录 1.介绍 1.1.什么是 JIRA Core? 1.2.什么是 JIRA SoftWare 2.JIRA 的官网在哪里? 3.如何下载安装? 4.对 JIRA 进行配置 4.1.JIRA ...
- mean项目的分模块开发
全文字版: 新建maven工程在,作为父工程用于最后集合使用,该工程不需要src,只需要一个pom.xml文件,规定一下依赖版本之类的,再建一个工具类的工程,不需要放配置文件,和工程中方法接口有关的不 ...
- location.origin不兼容IE8解决方案
最近项目中遇到一个问题,在ajax跟后台交互时需要传一个全路径url.项目上线后,在谷歌,火狐,360等浏览器访问一切正常.但唯独IE8下出现问题,提示url:undefined ! 这就尴尬了!!! ...
- Oracle 12c RAC 静默安装文档
参考文档: https://docs.oracle.com/en/database/oracle/oracle-database/12.2/cwlin/index.html https://docs. ...
- Docker 启动,进入容器,查看log命令
1.启动一个容器 docker run -d -P training/webapp python app.py -d:让容器在后台运行. -P:将容器内部使用的网络端口映射到我们使用的主机上. 如果需 ...
- 如何制作中文Javadoc包,并导入到Eclipse
原理:使用chm转换工具将chm文件转换为zip文件,导入eclipse中即可. 准备 JDK1.9 API 中文 谷歌翻译版:http://www.pc6.com/softview/SoftView ...
- MongoDB的导入与导出
一.导入与导出可以操作本地的mongodb也可以是远程的mongodb,通用选项: -h host 主机 --port port 端口 -u username 用户名 -p password 密码 如 ...
- ZooInspector 连接不到 Zookeeper 的解决方法
Zookeeper正常启动后,在使用 ZooInspector 连接 Zookeeper 时出现了连接不上的问题. [root@localhost bin]# zkServer.sh start Zo ...
- .NET CORE学习笔记系列(4)——ASP.NET CORE 程序启用SSL
一.什么是SSL? 1.概念: SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数 ...