cor*_*vid 5 python sqlite sqlalchemy flask
我有一个像这样的应用工厂
db = SQLAlchemy()
def create_app(environment):
app = Flask(__name__)
app.config.from_object(config[environment])
db.init_app(app)
# ... etc
return app
Run Code Online (Sandbox Code Playgroud)
然后,我有一个脚本,它在应用程序的上下文之外提取CSV.这个脚本是一个每x小时运行一次的cron
我想以某种方式更新sqlite数据库应用程序正在使用.这可能吗?
dav*_*ism 12
Flask-SQLAlchemy只需要一个应用程序上下文来操作.您可以手动创建应用程序上下文.
app = create_app(env)
ctx = app.app_context()
ctx.push()
# your code here
ctx.pop()
Run Code Online (Sandbox Code Playgroud)
Joe*_*rty 10
我知道这个问题已得到解答,但您也可以使用以下with
声明:
from my_package import create_app
app = create_app(my_envrionment)
with app.app_context():
# your code here
Run Code Online (Sandbox Code Playgroud)
我觉得这看起来有点干净:)
解决此问题的另一种优雅方法是使用 @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()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2750 次 |
最近记录: |