如果MySQL数据库连接池在很长一段时间内未使用,或者使用它的应用程序崩溃了,那么它是否会过期?

我正在使用从Python脚本连接数据库MySQL(MariaDB)。我使用上下文管理器来连接池中的连接。我想知道如果长时间不使用或我的程序崩溃,池是否会过期。我发现与MySQL数据库的连接过期,即使您忘记或无法在程序中关闭连接,它也会被释放吗,连接池的情况如何?MySQLConnectionPool


from contextlib import contextmanager

import mysql.connector

from mysql.connector.errors import Error

from mysql.connector import pooling


SQL_CONN_POOL = pooling.MySQLConnectionPool(

    pool_name="mysqlpool",

    pool_size=1,

    user=DB_USER,

    password=DB_PASS,

    host=DB_HOST,

    database=DATABASE,

    auth_plugin=DB_PLUGIN

)


@contextmanager

def mysql_connection_from_pool() -> "conn":

    conn_pool = SQL_CONN_POOL  # get connection from the pool, all the rest is the same

    _conn = conn_pool.get_connection()

    try:

        yield _conn

    except (Exception, Error) as ex:

        # if error happened all made changes during the connection will be rolled back:

        _conn.rollback()

        # this statement re-raise error to let it be handled in outer scope:

        raise

    else:

        # if everything is fine commit all changes to save them in db:

        _conn.commit()

    finally:

        # actually it returns connection to the pool, rather than close it

        _conn.close()



@contextmanager

def mysql_curs_from_pool() -> "curs":

    with mysql_connection_from_pool() as _conn:

        _curs = _conn.cursor()

        try:

            yield _curs

        finally:

            _curs.close()



撒科打诨
浏览 219回答 1
1回答

慕村9548890

是的,它可以超时。有两种超时配置。查看wait_timeout和interactive_timeout
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python