介绍
今天就跟大家聊聊有关如何在python3中利用ssh隧道对mysql进行连接,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
具体方法如下:
进口pymysql 从sshtunnel进口SSHTunnelForwarder 进口pymysql。游标#以dict形式输出 def dbconnect_ssh (ssh_host ssh_port密钥文件,ssh_user, db_host, db_name, sql, db_port, db_user, db_passwd): SSHTunnelForwarder ( (ssh_host ssh_port), # ssh_password=皊shpasswd", ssh_pkey=密钥文件, ssh_username=ssh_user, remote_bind_address=(db_host db_port) )服务器: db=pymysql.connect ( 主机=& # 39;127.0.0.1 # 39;=server.local_bind_port港 用户=db_user, passwd=db_passwd, db=db_name, charset=皍tf8", cursorclass=pymysql.cursors.DictCursor) 光标=db.cursor () 试一试: cursor.execute (sql) data=cursor.fetchall () db.commit () 除了: db.rollback () 收集=[] 结果的数据: collect.append(结果) db.close () cursor.close () 返回收集 if __name__==癬_main__": ssh_host=?0.10.2.13"# SSH服务器地址 ssh_port=22 # SSH端口 密钥文件=xxxx.key"# SSH密钥 ssh_user=皉oot"# SSH用户名 db_host=?27.0.0.1"#数据库地址 db_name=& # 39; dbname # 39;#数据库名 sql=& # 39;显示表;& # 39;# SQL db_port=3306 #数据库端口 db_user=& # 39;根# 39;#数据库用户名 db_passwd=& # 39; 33333 & # 39;#数据库密码 密钥文件,结果=dbconnect_ssh (ssh_host ssh_port ssh_user, db_host, db_name, sql, db_port, db_user, db_passwd) print(结果)
<强> Python使用SSHTunnel连接内网mysql数据库强>
<强>准备:强>
主要模块SSHTunnel, pip安装SSHTunnel
其余模块pymysql,剧场,configparser
<强>简介:强>
这里用的是数据库连接池和自动的链接断开重连机制,其实最主要的就是sshtunner的建立,所以可以只看服务建立的部分
<强>配置文件:强>
(mysql) 数据库=ad_insight max_connections=10 stale_timeout=1000 主机=localhost 用户=数据库用户名 密码=数据库密码 端口=3306
python代码
。池进口PooledMySQLDatabase 从剧场。快捷方式进口ReconnectMixin 从configparser进口configparser 从sshtunnel进口SSHTunnelForwarder 类RetryMySQLDatabase (ReconnectMixin PooledMySQLDatabase): _instance=没有 @staticmethod def get_db_instance (): 如果不是RetryMySQLDatabase._instance: 服务器=SSHTunnelForwarder ( ssh_address_or_host=& # 39; ssh域名或者地址& # 39;, ssh_port=ssh端口, ssh_password=& # 39; ssh密码& # 39;, ssh_username=& # 39; ssh名称& # 39;, remote_bind_address=(& # 39;数据库地址& # 39;,数据库端口) ) server.start () 配置=ConfigParser () config.read (“。/default.cfg"编码=皍tf-8") RetryMySQLDatabase。_instance=RetryMySQLDatabase ( str(配置[& # 39;mysql # 39;][& # 39;数据库# 39;]), max_connections=int(配置[& # 39;mysql # 39;] [& # 39; max_connections # 39;]), stale_timeout=int(配置[& # 39;mysql # 39;] [& # 39; stale_timeout& # 39;]), 主机=str(配置[& # 39;mysql # 39;][& # 39;主机# 39;]), 用户=str(配置[& # 39;mysql # 39;][& # 39;用户# 39;]), 密码=str(配置[& # 39;mysql # 39;][& # 39;密码# 39;]), 端口=server.local_bind_port #端口=int(配置[& # 39;mysql # 39;][& # 39;港口# 39;]) ) 返回RetryMySQLDatabase._instance
其实主要是在服务器对象的建立和服务器。开始
看完上述内容,你们对如何在python3中利用ssh隧道对mysql进行连接有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。