sqlalchemy通过ssh连接远程mysql服务器

首先需要一个模块sshtunnel,如果没有直接pip install sshtunnel

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通道服务启动
    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()

原文地址:https://www.cnblogs.com/wuyongqiang/p/8678064.html

时间: 2024-10-23 14:01:10

sqlalchemy通过ssh连接远程mysql服务器的相关文章

Navitcat连接远程mysql服务器连不上

用putty操作mysql数据库不太方便,就想着用Navitcat通过SSH去连接远程mysql服务器,可实现动态对数据进行修改操作.依网上很多网友的意见,楼主使用以下命令:vim /etc/my.cnf. 在[mysqld]下面加入如下两行 skip-name-resolve skip-grant-tables 保存,重启mysql服务,结果在putty上登录不上mysql(用户名和密码没错),后来去掉skip-grant-tables,终于登上了.然后我在网页上操作部署在远程服务器上的项目,

phpmyadmin配置连接远程mysql服务器

首先进入目录/phpmyadmin/libraries 打开目录其中的config.default.php文件找到并修改下面的内容: $cfg['AllowArbitraryServer'] = false;修改成:$cfg['AllowArbitraryServer'] = true; $cfg['Servers'][$i]['host'] = '';改为Mysql服务器的ip地址 $cfg['Servers'][$i]['port'] = '';改为Mysql服务器的端口 $cfg['Ser

Mac下用SSH连接远程Linux服务器

打开终端 输入连接服务器命令:ssh  用户名@服务器IP,输入密码. ssh [email protected] 然后输入密码即可 退出 control+d 原文地址:https://www.cnblogs.com/loaderman/p/11655589.html

第十一章 PhpMyAdmin连接远程mysql服务器---连接openwrt 703N服务器

//千万不要在你原来的那个phpmyadmin文件夹上操作~~~要复制一个新的进行操作,这样我们就可以同时使用本地和远程 ? 一.下载phpmyadmin到本地 我使用的是windows下的集成WAMP软件phpstudy 二.修改libraries文件夹下的config.default.php文件 1.查找$cfg['PmaAbsoluteUri'] ,将其值设置为你本地的phpmyadmin路径,例如$cfg['PmaAbsoluteUri'] = 'http://localhost:909

Mac下如何用SSH连接远程Linux服务器

 终端命令 a).打开Mac的命令终端 b).输入ssh -p 22 [email protected] 它会提示你输入密码,输入正确的密码之后,你就发现已经登陆成功了.(22: 端口号 root: 用户名) 原文地址:https://www.cnblogs.com/flywong/p/9797844.html

Mac下如何用SSH连接远程Linux服务器及Linux一些常用操作命令,更新中.....

1. 终端命令 a).打开Mac的命令终端 b).输入ssh -p 22 [email protected] 它会提示你输入密码,输入正确的密码之后,你就发现已经登陆成功了.(22: 端口号 root: 用户名) 2.apache 配置和重启 a).Ubuntu默认是/var/www,可以在/etc/apache2/sites-available目录的default中修改apache 默认地址. b).apache 重启:sudo /etc/init.d/apache2 restart 3.修改

Windows平台使用Navicat for MySQL通过SSH密钥认证连接远程MySQL数据库

使用场景: 1.MySQL数据库的管理员账号只允许本地登录 2.应用程序连接账号只允许程序部署服务器所属IP地址连接 实现方法: 客户端工具通过无密码SSH密钥对连接到MySQL数据库所在服务器,再通过数据库相应的账号在服务器本地登录. 1.安装ssh相关程序包 yum -y install openssh-clients   #ssh-copy-id命令 2.在本地机器上使用ssh-keygen产生公钥私钥对 [[email protected]~]$ ssh-keygen 3.用ssh-co

jmeter连接配置带跳板机(SSH)的mysql服务器

jmeter连接配置mysql服务器时,如果数据库服务器没有通过ssh连接,则只需要配置相应的jdbc参数就可以了,即请求域名或ip地址:3306,如果数据库服务器是通过SSH连接的,那需要通过中间远程连接工具来登录,此处使用的远程连接工具为Putty,配置的时候需要将数据库的ssh->tunnel中的请求域名先映射到本地3306的端口(一般mysql的请求端口设置为3306,只是符合大众流~~~),然后通过ssh的服务器ip及端口来访问,具体的配置请参考如下: 1.首先,下载并打开Putty喽

Mac下ssh连接远程服务器时自动断开问题

在mac下使用securecrt通过ssh连接远程服务器时,总会一段时间没有动作后,ssh被自动断开.在windows下用xmanager貌似没有遇到过这个问题. 在网上找了解决方法如下: 客户端配置: Global.ini文件中将D:"Disconnect After Resume Timeout"=00000000改为D:"Disconnect After Resume Timeout"=FFFFFFFF securecrt界面上配置:send string \