我正在使用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()
函数时,出现错误。对如何修复有什么建议吗?
1条答案
按热度按时间uqzxnwby1#
我最终想出了一个解决办法。
如果将数据库对象定义为:
则不分配任何上下文。
如果将数据库对象定义为:
然后,它将分配正确的上下文。