【问题标题】:'No application found. Either work inside a view function or push an application context.' [duplicate]'没有找到应用程序。在视图函数内工作或推送应用程序上下文。 [复制]
【发布时间】:2018-03-14 10:03:14
【问题描述】:

我正在尝试将我的 Flask-SQLAlchemy 模型分成单独的文件。当我尝试运行db.create_all() 时,我得到No application found. Either work inside a view function or push an application context.

shared/db.py:

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

app.py:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from shared.db import db

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'My connection string'
db.init_app(app)

user.py:

from shared.db import db

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    email_address = db.Column(db.String(300), unique=True, nullable=False)
    password = db.Column(db.Text, nullable=False)

【问题讨论】:

    标签: python flask flask-sqlalchemy


    【解决方案1】:

    在创建表时使用with app.app_context() 推送应用程序上下文。

    app = Flask(__name__)
    app.config['SQLALCHEMY_DATABASE_URI'] = 'My connection string'
    db.init_app(app)
    
    with app.app_context():
        db.create_all()
    

    【讨论】:

    • 非常感谢谢谢 (+1)
    • 嗨,即使在放了这个之后我也遇到了问题。你能帮忙吗?
    • 这在 app = create_app() app.app_context().push() 之后帮助了我更多信息:flask-sqlalchemy.palletsprojects.com/en/2.x/contexts
    • @AnnaSemjén 你找到解决方案了吗,我添加 create_app() 到烧瓶__init__py 之后,我可以创建表并进入烧瓶应用程序,但在终端我无法获得User.query.all()
    • 我认为你也需要创建上下文 - 如果我没记错的话 - >>> from yourapp import create_app >>> app = create_app() >>> app.app_context().push()
    猜你喜欢
    • 2021-09-05
    • 2019-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-11
    • 2018-06-09
    相关资源
    最近更新 更多