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

 

 

其实数据库还是很好玩的,有问题在更新,最近是因为网络上面很多都无效,特地自己整理了一份,也作为自己的一个笔记,加油。

 

posted @ 2021-09-30 17:35  WangHello  阅读(3507)  评论(0编辑  收藏  举报