[SqlAlchemy的MySQL(mariaDB)连接错误

问题描述 投票:4回答:1

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

但是在我的python应用程序中,我无法连接,或者最好在执行某些操作之前就失去了连接,并出现以下错误:

OperationalError:(OperationalError)(2013,'与MySQL的连接丢失查询期间的服务器')无无

我将SqlAlchemy与mysqldb连接器配合使用,如下所示:在模型目录的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()

在模型中也是一些模型类:

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)

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

感谢您的时间!

python mysql sqlalchemy virtualbox mariadb
1个回答
1
投票

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

我建议将SQLALCHEMY_POOL_RECYCLE设置为少于600秒,以使服务器不会超时。

© www.soinside.com 2019 - 2024. All rights reserved.