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数据库的详细内容。
