python sqlalchemy 连接mysql并发查询报错 2006, 2013, 2014, 2045, 2055

直接上代码:

from MySQLdb.constants.CLIENT import MULTI_STATEMENTS, MULTI_RESULTS
from sqlalchemy import create_engine, event
from sqlalchemy.exc import DisconnectionError
from connection.connect import Connect

engine_mysql = create_engine("mysql+mysqldb://{}:{}@{}/{}".format(
    MYSQL_SERVER_USER,
    MYSQL_SERVER_PASS,
    MYSQL_SERVER_ADDRESS,
    MYSQL_DATABASE_NAME), pool_timeout=60,
    connect_args={'charset': 'utf8', 'autocommit': 'true', 'client_flag': MULTI_STATEMENTS | MULTI_RESULTS}, echo=True,
    max_overflow=20,
    pool_size=100, pool_recycle=10, echo_pool=True)


# 主要在这里,添加Listener 每次访问前做验证是否连接
def checkout_listener(dbapi_con, con_record, con_proxy):
    try:
        try:
            dbapi_con.ping(False)
        except TypeError:
            dbapi_con.ping()
    except dbapi_con.OperationalError as exc:
        if exc.args[0] in (2006, 2013, 2014, 2045, 2055):
            raise DisconnectionError()
        else:
            raise


event.listen(engine_mysql, 'checkout', checkout_listener)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值