您好我在虚拟机框中运行的Ubuntu服务器上有一个mariaDB数据库。 使用'Sequal Pro',我可以毫无问题地连接(使用ssh选项)。 端口转发如下:HOST 127.0.0.1 3306 GAST 10.0.2.15 3306
但是在我的python应用程序中,我无法连接,或者更好的是它在它可以执行某些操作之前丢失了连接,并出现以下错误:
OperationalError :( OperationalError)(2013,'与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()
在模型中也是一些模型类:
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)
希望有人能帮助我理解并解决问题。
谢谢你的时间!
答案 0 :(得分:1)
这可能是因为MariaDB的默认超时要短得多,为600秒。请在此处查看超时文档:flask-sqlalchemy timeout docs
我建议将SQLALCHEMY_POOL_RECYCLE设置为小于600秒,以便服务器不会超时。