一、使用pymysql连接Mysql数据库连接示例: conn = pymysql.connect(host=host,user=user,password=passwd,db=db,port=int(prot),charset='utf8mb4') pymysq源代码: 创建连接的源代码如下,可根据注释参考param host自行添加所需参数。 ![]() pymsql 二、 使用sqlalchemy连接Mysql数据库示例: bind=create_engine(“mysql+pymysql://username:password@ip:port/database?charset=charset”, echo_pool=False) sqlalchemy源代码: 数据库初始化源代码如下,可根据注释参考param echo_pool自行添加所需参数。 ![]() ![]() 三、 使用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”根据需要自行添加参数: ![]() ![]() ![]() 四、异常问题排查方法当数据库出现问题,或者默认连接池配置无法满足业务需求时,程序中可能会抛出数据库相关异常,如下图所示: ![]() 这时我们可以打开日志输出,方便定位问题调整参数配置。 例如: echo_pool设置为”debug”可以打开数据库连接池相关日志,方便调整连接池参数。 打开连接池日志后,我们可以看到类似下图所示的日志输出: ![]() 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} |
|