Flask Web开发新手:我尝试使用SQLAlchemy作为我的ORM在Flask应用程序中查询MySQL数据库。
每次有GET请求时,都会从python函数生成一个分数,并且总分(即列'分数的总和)将以JSON形式返回给模板。
我得到了一个" TypeError:' BaseQuery'对象不可调用"当像这样使用sum func时:
all_points = [Play.query(func.sum(Play.points))]
当我尝试使用.get()时,它会在模板(即对象对象),[对象对象]中放弃一些时髦的东西,但至少会返回一些东西:
all_points = [Play.query.get(1)]
不确定我的错误是什么:查询是错误的还是我将对象添加到数据库的方式不正确?
// db model
class Play(db.Model):
__tablename__ = "scoring"
rounds = db.Column(db.Integer, primary_key=True)
points = db.Column(db.Integer)
def __init__(self, points):
self.points = points
// Marshmallow架构:
class PlaySchema(ma.Schema):
class Meta:
fields = ('rounds','points')
play_schema = PlaySchema()
plays_schema = PlaySchema(many=True,only=('rounds', 'points'))
//从此函数返回得分:
score = dice_score(d1,d2,d3,d4,d5)
//对于db的每个GET请求条目:
db.create_all()
round_score = Play(score)
db.session.add(round_score)
db.session.commit()
//有问题的查询:
all_points = [Play.query(func.sum(Play.points))]
//最后将结果传递给带有转储(marshmallow)的模板:
dump_score = plays_schema.dump(all_points)
return render_template('main.html',data_get=data_get)
答案 0 :(得分:0)
Play.query
无法调用,请改用db.session.query(...)
:
db.session.query(func.sum(Play.points))