在应用上下文外创建数据库
我有一个应用程序工厂,像这样:
db = SQLAlchemy()
def create_app(environment):
app = Flask(__name__)
app.config.from_object(config[environment])
db.init_app(app)
# ... etc
return app
然后,我有一个脚本,它会在应用程序之外获取CSV文件。这个脚本是一个定时任务,每隔一段时间就会运行一次。
我想更新应用程序正在使用的sqlite数据库。不知道这样做行不行?
3 个回答
6
另一种优雅的解决方法是使用 @with_appcontext 装饰器。
from flask.cli import with_appcontext
@click.command(name='db-init-data')
@with_appcontext
def db_init_data():
"""Init db with some data"""
admin = User(fname='John', lname='Smith', email='jsmith@google.com')
db.session.add(admin)
db.session.commit()
15
我知道这个问题已经有人回答过了,但你也可以使用 with
语句:
from my_package import create_app
app = create_app(my_envrionment)
with app.app_context():
# your code here
我觉得这样看起来更简洁一些 :)