您现在的位置是:网站首页> 编程资料编程资料
Python基于ssh远程连接Mysql数据库操作_python_
2023-05-26
367人已围观
简介 Python基于ssh远程连接Mysql数据库操作_python_
背景
如果需要访问远程服务器的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基于ssh远程连接Mysql数据库操作的详细内容,更多关于Python ssh远程连接Mysql的资料请关注其它相关文章!
您可能感兴趣的文章:
相关内容
- python opencv图像的高通滤波和低通滤波的示例代码_python_
- Python利用fastapi实现上传文件_python_
- python unicodedata模块用法_python_
- Python处理yaml和嵌套数据结构技巧示例_python_
- Python中的枚举函数enumerate()的具体用法_python_
- Python中集合的创建及常用函数的使用详解_python_
- python中的属性管理机制详解_python_
- python中sort()和sorted()的区别及用法实例_python_
- OpenMV与JSON编码问题解析_python_
- python自动化实现的简单使用_python_
