python连接mysql的几种方式
其实在我们编码过程中,不管是爬虫还是服务端还是做数据分析的业务场景,都需要对数据库进行一些数据管理操作,那怎么连库呢?
pymysql是python用来连数据库比较常用的之一,接下来我们简单介绍一下正常pymysql连接和利用ssh通道在借助pymysql连接的使用
首先直接连接的 那是非常简单的 然后就连上了,可以利用conn创建一个cursor,就可以开始sql的增删改查了,最后记得close哦
mysql_conf = { "host": '数据库ip地址', "port": 数据库连接端口, "user": '数据库账号', "password": '数据库密码', "db": '要连接的数据库', "charset": "utf8", "cursorclass": pymysql.cursors.DictCursor } conn = pymysql.connect(**mysql_conf)
navicat大家都知道怎么连,直接把配置文件对应的数据复制进去就好
其实大家会好奇什么是通道呢,使用配置白名单,然后以上面的方式直接连不是也可以吗?
只能说每个公司的运维人员总有一套自己的安全模式,有些公司除了加白,也有使用ssh通道连接的。
其实原来很简单,就是通过ssh连接到服务器上面,在通过服务器连接到本地的mysql
这里需要安装sshtunnel配合pymysql进行使用,以下为参考代码,利用密码登录到服务器进行云集群的连接,如果实在本地服务器上面就把remote_bind_address修改成local_bind_address,对应后面的内容填本地数据库的配置即可,很简单吧
def get_conn(ssh_conf,mysql_conf): ''' 利用ssh通道连接数据库 :param ssh_conf: 服务器配置 :param mysql_conf: 数据库配置 :return: ''' server = SSHTunnelForwarder( (ssh_conf["host"], ssh_conf["port"]), ssh_password=ssh_conf["ssh_password"], ssh_username=ssh_conf["ssh_username"], remote_bind_address=(mysql_conf["host"], mysql_conf["port"]) ) server.start() client = pymysql.connect(host='127.0.0.1', # 此处必须是是127.0.0.1 port=server.local_bind_port, user=mysql_conf["user"], passwd=mysql_conf["password"], db=mysql_conf["db"], charset="utf8")
以下说一下navicat如何连接
第一步将服务器的密码填到ssh中
第二步到常规的地方配置数据的地址,如果是云集群的就填数据库的云地址,如果是本地的填localhost或者127.0.0.1
其实数据库还是很好玩的,有问题在更新,最近是因为网络上面很多都无效,特地自己整理了一份,也作为自己的一个笔记,加油。