分享

Python连接Mysql数据库的几种方式以及问题排查方法

 网摘文苑 2022-05-24 发布于新疆

一、使用pymysql连接Mysql数据库

连接示例:

conn = pymysql.connect(host=host,user=user,password=passwd,db=db,port=int(prot),charset='utf8mb4')

pymysq源代码:

创建连接的源代码如下,可根据注释参考param host自行添加所需参数。

文章图片1

pymsql

二、 使用sqlalchemy连接Mysql数据库

示例:

bind=create_engine(“mysql+pymysql://username:password@ip:port/database?charset=charset”, echo_pool=False)

sqlalchemy源代码:

数据库初始化源代码如下,可根据注释参考param echo_pool自行添加所需参数。

文章图片2
文章图片3

三、 使用flask_sqlalchemy连接Mysql数据库

如果我们使用了Flask框架,可以使用flask_sqlalchemy作为数据库访问组件,它可以帮助我们生成数据库模型、管理连接池等等。

示例:

app.config['SQLALCHEMY_DATABASE_URI'] = “mysql+pymysql://username:password@ip:port/database?charset=utf8mb4

db = SQLAlchemy(app)

flask_sqlalchemy源代码:

源代码如下,可参考“SQLALCHEMY_DATABASE_URI”根据需要自行添加参数:

文章图片4
文章图片5
文章图片6

四、异常问题排查方法

当数据库出现问题,或者默认连接池配置无法满足业务需求时,程序中可能会抛出数据库相关异常,如下图所示:

文章图片7

这时我们可以打开日志输出,方便定位问题调整参数配置。

例如:

echo_pool设置为”debug”可以打开数据库连接池相关日志,方便调整连接池参数。

打开连接池日志后,我们可以看到类似下图所示的日志输出:

文章图片8

echo设置为True时,可输出sql语句详细日志。

connect_args 中的read_timeout可设置数据库连接读操作的超时时间,避免数据库网络异常时长时间等待,一般默认为30秒,示例中我们把超时时间设置为3秒。

sqlalchemy参数调整示例:

bind=create_engine(“mysql+pymysql://username:password@ip:port/database?charset=charset”,echo_pool=“debug”,echo=True ,connect_args={'read_timeout': 3})

flask_sqlalchemy参数调整示例:

app.config['SQLALCHEMY_ENGINE_OPTIONS'] = {'echo':True,'echo_pool':'debug','connect_args':{'read_timeout': 3}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多