SqlAlchemy 的 MySQL (mariaDB) 连接错误

Posted

技术标签:

【中文标题】SqlAlchemy 的 MySQL (mariaDB) 连接错误【英文标题】:MySQL (mariaDB) Connection Error with SqlAlchemy 【发布时间】:2013-05-30 00:16:42 【问题描述】:

您好,我在虚拟机中运行的 Ubuntu 服务器上有一个 mariaDB 数据库。 使用“Sequal Pro”,我可以毫无问题地连接(使用 ssh 选项)。 端口转发如下​​:HOST 127.0.0.1 3306 GAST 10.0.2.15 3306

但是在我的python应用程序中我无法连接,或者更好的是它在它可以做某事之前失去了连接,出现以下错误:

OperationalError: (OperationalError) (2013, 'Lost connection to mysql 查询期间的服务器') 无 无

我将 SqlAlchemy 与 mysqldb 连接器一起使用,如下所示: 在models目录下的init.py文件中:

# for this must install pymsql (pip install pymysql)
DATABASE = 'mysql+pymysql://<user>:<password>@127.0.0.1/fist-test'

app.debug = DEBUG
app.secret_key = 'secret-key123'
app.config['SQLALCHEMY_DATABASE_URI'] = DATABASE
db = SQLAlchemy(app)

在main.py文件中的项目主目录中:

from models import db

@app.route('/test')
def test():
    db.create_all()
    return 'create objects...'

if __name__ == '__main__':
    app.run()

models 中也是一些模型类:

from sqlalchemy import Column, Integer, String

class User(Base):
     __tablename__ = 'users'

     id = Column(Integer, primary_key=True)
     name = Column(String)
     fullname = Column(String)
     password = Column(String)

     def __init__(self, name, fullname, password):
         self.name = name
         self.fullname = fullname
         self.password = password

     def __repr__(self):
        return "<User('%s','%s', '%s')>" % (self.name, self.fullname, self.password)

希望有人能帮助我理解和解决问题。

感谢您的宝贵时间!

【问题讨论】:

【参考方案1】:

这可能是因为 MariaDB 的默认超时时间要短得多,为 600 秒。在此处查看超时文档:flask-sqlalchemy timeout docs

我建议将 SQLALCHEMY_POOL_RECYCLE 设置为小于 600 秒,这样服务器就不会超时。

【讨论】:

以上是关于SqlAlchemy 的 MySQL (mariaDB) 连接错误的主要内容,如果未能解决你的问题,请参考以下文章

Centos安装Maria

centOS7 下配置和启动maria数据库

Maria DB 安装

Maria-DB

Redhat 7 Maria DB安装与配置

Laravel 6.x迁移因Maria DB而失败