sqlite FLAASK-SQLAlChemy未找到应用程序运行时错误

uxh89sit  于 2022-11-15  发布在  SQLite
关注(0)|答案(1)|浏览(154)

我正在使用FlaskSQL炼金术来代表一个学生。我在查询我的学生对象时遇到运行时错误。我参考了以前关于这个问题的帖子,但似乎无法修复它。
这是我的学生班级:

class Student(db.Model):
    __tablename__ = 'students'
    id = db.Column(db.Integer(), primary_key=True)
    last_name = db.Column(db.Text(), nullable=False)
    first_name = db.Column(db.Text(), nullable=False)
    major_1 = db.Column(db.Text(), nullable=False)
    major_2 = db.Column(db.Text())
    major_3 = db.Column(db.Text())
    concentration_1 = db.Column(db.Text())
    concentration_2 = db.Column(db.Text())
    concentration_3 = db.Column(db.Text())
    minor_1 = db.Column(db.Text())
    minor_2 = db.Column(db.Text())
    minor_3 = db.Column(db.Text())
    math_placement_score = db.Column(db.Integer())
    high_school_gpa = db.Column(db.Float(), 
        db.CheckConstraint('high_school_gpa >= 0.0 AND high_school_gpa <= 4.0'))
    college_gpa = db.Column(db.Float(), 
        db.CheckConstraint('high_school_gpa >= 0.0 AND high_school_gpa <= 4.0'))
    sat_score = db.Column(db.Integer(), 
        db.CheckConstraint(f'sat_score >= {app.config["SAT_SCORE_MIN"]} AND sat_score <= {app.config["SAT_SCORE_MAX"]}'))
    act_score = db.Column(db.Integer(), 
        db.CheckConstraint(f'sat_score >= {app.config["ACT_SCORE_MIN"]} AND sat_score <= {app.config["ACT_SCORE_MAX"]}'))
    state_code = db.Column(db.Text(), nullable=False)
    country_code = db.Column(db.Text(), nullable=False)
    leave_date = db.Column(db.DateTime())
    first_gen_student = db.Column(db.Boolean())

    @staticmethod
    def gen_random_id():
        print(Student.query.all()) # This errors out.

下面是我初始化模型的地方:

# Init the DB, create all tables.
db.init_app(app)
from app.models import User, Student
with app.app_context():
    db.create_all()

错误堆栈如下:Error Stack
当我调用gen_random_id()函数时,出现错误。对如何修复有什么建议吗?

uqzxnwby

uqzxnwby1#

我最终想出了一个解决办法。
如果将数据库对象定义为:

db = SQLAlchemy()

则不分配任何上下文。
如果将数据库对象定义为:

db = SQLAlchemy(app)

然后,它将分配正确的上下文。

相关问题