在Python中使用PyMysql连接MariaDB时出现问题

时间:2019-04-25 19:59:39

标签: python mysql mariadb pymysql

我有一个与MariaDB database in a Docker container连接的Flask Python API,并且我正在与PyMysql连接到数据库。

问题是我的服务器或应用程序在10分钟后关闭了连接。 我已经尝试过增加MariaDB配置文件和PyMySQL中的超时时间,但无济于事。错误如下:

Python错误:

"OperationalError: (2006, "MySQL server has gone away 
(ConnectionResetError(104, 'Connection reset by peer'))")"

数据库错误:

"[Warning] Aborted connection 9 to db: 'db' user: 'user' host: 'ip'
(Got timeout reading communication packets)"

有人知道如何解决问题吗?

我在下面提供我的MariaDB配置文件和我的Python代码。

谢谢。

PS:我已经尝试使用另一个Python包通过Flask SQLAlchemy连接到MariaDB,但是不幸的是,数据库连接也会发生相同的行为。 因此,我认为问题不是Python代码,而是Docker映像(也许)。

my.cnf

# 7 days = 604800s / 8 hours = 28800s 
wait_timeout = 604800
interactive_timeout = 28800

Python代码:

from pymysql import connect
from pymysql.cursors import DictCursor


class MySQLConnection:

    def __init__(self, host, port, user, password, schema):       
        try:
            # Connect to the database
            self.connection = connect(host=host, port=port, 
                                      user=user, password=password, 
                                      db=schema, cursorclass=DictCursor, 
                                      connect_timeout=50)

            # create a cursor object
            self.cursor = self.connection.cursor()
            print("DB connection was successful!")
        except Exception as error:
            print("DB connection was failed! \nError: ", error)
            exit(1)

1 个答案:

答案 0 :(得分:0)