如何用 flask_mongoengine 关闭数据库?
How to close db with flask_mongoengine?
我正在学习使用 flask 和 flask_mongoengine 创建网站。按照 flask 教程 1.0.2 版本。但是我运行遇到了问题,如何实现get_db()
和close_db()
功能?
目前我正在做的是:
myapp.py
....
def create_app():
app = Flask(__name__)
from db import db
db.init_app(app)
@app.route('/')
def home():
...
return app
db.py
from flask import g
from flask_mongoengine import MongoEngine
db = MongoEngine()
def get_db():
g.db = ???
return g.db
def close_db():
db = g.pop('db', None)
if db is not None:
??? # db.close() doesn't exist!!!
我很困惑这部分怎么做。有人可以提出任何建议吗?在 flask_mongoengine 教程页面中,他们没有实现 get_db()
和 close_db()
...
混乱的发生是因为在那些教程中有太多的编程模式。在 flask-1.0.2 教程中,他们使用 getter 方法模式,但是 flask-mongoengine 依赖于将数据库引导到 flask-app-instance,这依赖于构建器模式 — Flask Application Factories。它可能仍然令人困惑,但我会告诉你它是如何完成的。
Bootstrap create_app 中的 flask-mongoengine:
def create_app(test_config=None):
app = Flask(__name__)
# configure mongo settings here like in flask-mongoengine docs
g.db = db = MongoEngine()
db.init_app(app)
def get_db():
return g.db
def close_db():
pass
close_db()
怎么样?好吧,如果您选择的数据库需要关闭一些清理操作,则存在该功能。但是我没有在 mongoengine 文档中发现任何明确提到 mongoengine 数据库连接需要你的清理操作才能关闭,所以你可以通过它。
我正在学习使用 flask 和 flask_mongoengine 创建网站。按照 flask 教程 1.0.2 版本。但是我运行遇到了问题,如何实现get_db()
和close_db()
功能?
目前我正在做的是:
myapp.py
....
def create_app():
app = Flask(__name__)
from db import db
db.init_app(app)
@app.route('/')
def home():
...
return app
db.py
from flask import g
from flask_mongoengine import MongoEngine
db = MongoEngine()
def get_db():
g.db = ???
return g.db
def close_db():
db = g.pop('db', None)
if db is not None:
??? # db.close() doesn't exist!!!
我很困惑这部分怎么做。有人可以提出任何建议吗?在 flask_mongoengine 教程页面中,他们没有实现 get_db()
和 close_db()
...
混乱的发生是因为在那些教程中有太多的编程模式。在 flask-1.0.2 教程中,他们使用 getter 方法模式,但是 flask-mongoengine 依赖于将数据库引导到 flask-app-instance,这依赖于构建器模式 — Flask Application Factories。它可能仍然令人困惑,但我会告诉你它是如何完成的。
Bootstrap create_app 中的 flask-mongoengine:
def create_app(test_config=None):
app = Flask(__name__)
# configure mongo settings here like in flask-mongoengine docs
g.db = db = MongoEngine()
db.init_app(app)
def get_db():
return g.db
def close_db():
pass
close_db()
怎么样?好吧,如果您选择的数据库需要关闭一些清理操作,则存在该功能。但是我没有在 mongoengine 文档中发现任何明确提到 mongoengine 数据库连接需要你的清理操作才能关闭,所以你可以通过它。