Python基于ssh远程连接Mysql数据库操作

 更新时间:2022年06月23日 11:50:34   作者:数据人阿多  
这篇文章主要为大家介绍了Python基于ssh远程连接Mysql数据库操作示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

背景

如果需要访问远程服务器的Mysql数据库,但是该Mysql数据库为了安全期间,安全措施设置为只允许本地连接(也就是你需要登录到该台服务器才能使用),其他远程连接是不可以直接访问,并且相应的端口也做了修改,那么就需要基于ssh来连接该数据库。这种方式连接数据库与Navicat里面界面化基于ssh连接一样。

Navicat

连接数据库

安装支持库

  • 如果要连接Mysql,首先需要安装pymysql
pip install pymysql
  • 安装基于ssh的库sshtunnel
pip install sshtunnel    #当前最新 0.3.1版

建议安装最新的sshtunnel库,旧版本库有一些bug

连接Mysql

基于ssh连接Mysql可以查看sshtunnel的文档,里面有一些案例

with SSHTunnelForwarder(
        ('192.168.1.1', 2222),
        ssh_password='123456',
        ssh_username='root',
        remote_bind_address=('127.0.0.1', 3306)) as server:
    print('SSH连接成功')
    conn = pymysql.connect(host='127.0.0.1',
                           port=server.local_bind_port,
                           user='root',
                           database='data',
                           charset='utf8')
    print('mysql数据库连接成功')
    cursor = conn.cursor()
    ...  #获取数据操作,此处省略
    cursor.close()
    conn.close()

自定义查询函数

可以对上面的连接进行封装为一个函数,方便其他地方使用

def mysql_ssh(sql,args=None):
    with SSHTunnelForwarder(
            ('192.168.1.1', 2222),
            ssh_password='123456',
            ssh_username='root',
            remote_bind_address=('127.0.0.1', 3306)) as server:
        print('SSH连接成功')
        conn = pymysql.connect(host='127.0.0.1',
                               port=server.local_bind_port,
                               user='root',
                               database='data',
                               charset='utf8')
        print('mysql数据库连接成功')
        cursor = conn.cursor()
        print('游标获取成功')
        try:
            print(f'执行查询语句:{sql}  参数:{args}')
            cursor.execute(sql,args)
            print('数据查询成功')
            conn.commit()
            print('事务提交成功')
            datas = cursor.fetchall()
            success = True
        except:
            print('数据查询失败')
            datas = None
            success = False
        print('正在关闭数据库连接')
        cursor.close()
        conn.close()
    return datas, success

注意点:

  • 在使用数据库时,conn.commit()cursor.close()conn.close()这些一定要规范使用,防止不必要的bug
  • 传入参数时建议用这种方式cursor.execute(sql,args),防止sql注入的风险

相关参考:

Python加载txt数据乱码问题升级版解决方法

Python文件打包成exe可执行程序

以上就是Python基于ssh远程连接Mysql数据库操作的详细内容,更多关于Python ssh远程连接Mysql的资料请关注脚本之家其它相关文章!

相关文章

  • Pygame代码 制作一个贪吃蛇小游戏

    Pygame代码 制作一个贪吃蛇小游戏

    这篇文章主要介绍了100行Pygame代码 制作一个贪吃蛇小游戏,相信我们大家都玩过贪吃蛇游戏,今天我们就从头一起来写一个贪吃蛇小游戏,只需要100多行的代码就完成了,需要的朋友可以参考一下
    2021-12-12
  • Blender Python编程快速入门教程

    Blender Python编程快速入门教程

    这篇文章主要为大家介绍了Blender Python编程快速入门教程示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • JavaScript中的模拟事件和自定义事件实例分析

    JavaScript中的模拟事件和自定义事件实例分析

    这篇文章主要介绍了JavaScript中的模拟事件和自定义事件,结合实例形式分析了JavaScript模拟事件和自定义事件相关操作步骤、实现技巧与注意事项,需要的朋友可以参考下
    2018-07-07
  • 上手简单,功能强大的Python爬虫框架——feapder

    上手简单,功能强大的Python爬虫框架——feapder

    这篇文章主要介绍了上手简单,功能强大的Python爬虫框架——feapder的使用教程,帮助大家更好的利用python进行爬虫,感兴趣的朋友可以了解下
    2021-04-04
  • 关于pytest结合csv模块实现csv格式的数据驱动问题

    关于pytest结合csv模块实现csv格式的数据驱动问题

    这篇文章主要介绍了pytest结合csv模块实现csv格式的数据驱动,使用python中的csv模块来处理csv文件,结合pygtest的参数化处理方式来实现ddt,本文通过示例代码给大家介绍的非常详细,需要的朋友参考下吧
    2022-05-05
  • Python中if语句的使用方法及实例代码

    Python中if语句的使用方法及实例代码

    if语句能够进行条件测试,并依据一定的条件进行具体的操作,下面这篇文章主要给大家介绍了关于Python中if语句的使用方法及实例代码,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-11-11
  • ubuntu 安装pyqt5和卸载pyQt5的方法

    ubuntu 安装pyqt5和卸载pyQt5的方法

    这篇文章主要介绍了ubuntu 安装pyqt5和卸载pyQt5的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • 利用python 下载bilibili视频

    利用python 下载bilibili视频

    这篇文章主要介绍了利用python 下载bilibili视频,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-11-11
  • 基于Tensorflow批量数据的输入实现方式

    基于Tensorflow批量数据的输入实现方式

    今天小编就为大家分享一篇基于Tensorflow批量数据的输入实现方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • python使用Celery构建异步任务队列提高服务器吞吐量及响应速度

    python使用Celery构建异步任务队列提高服务器吞吐量及响应速度

    这篇文章主要介绍了python使用Celery构建异步任务队列提高服务器吞吐量及响应速度实例探究,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01

最新评论