我四处寻找类似主题的帮助,但没有找到解决我的问题的正确方法,这个问题涉及SQLAlchemy/Flask-SQLAlchemy。你知道吗
情况是这样的:我有3个表处理彩票数据。表格如下:“莱佛士”表格:
class RaffleModel(db.Model):
__tablename__ = 'raffles'
id = db.Column(db.Integer, primary_key=True)
# relationship to users
user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
user = db.relationship("UserModel", backref="raffles")
# relationship to ticket_md
ticket_md_id = db.Column(db.Integer, db.ForeignKey('ticket_mds.id'))
ticket_md = db.relationship("TicketMetaDataModel", backref="raffles")
def __init__(self, user, ticket_md):
self.user = user
self.ticket_md = ticket_md
使用以下示例数据:
id user_id ticket_md_id
1 1 1
2 2 1
3 3 1
4 1 2
5 2 2
“用户”表:
class UserModel(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
first_name = db.Column(db.String(25))
last_name = db.Column(db.String(25))
won = db.Column(db.Boolean, default=False, nullable=False)
# has backref via user.raffles
def __init__(self, first_name, last_name, won):
self.first_name = first_name
self.last_name = last_name
self.won = won
使用以下示例数据:
id first_name last_name won
1 Rob Stark False
2 Stan Clark False
3 Tom Dark False
最后一张“票证”表:
class TicketMetaDataModel(db.Model):
__tablename__ = 'ticket_mds'
id = db.Column(db.Integer, primary_key=True)
raffle_type = db.Column(db.String(20))
description = db.Column(db.String(200))
modifier = db.Column(db.Integer)
# has backref via ticket_md.raffles
def __init__(self, raffle_type, description, modifier):
self.raffle_type = raffle_type
self.description = description
self.modifier = modifier
使用以下示例数据:
id raffle_type description modifier
1 type_1 blah blah 21
2 type_2 blah blah 5
我在这里的问题在于,我似乎不能很好地找出一个查询来获得票点的总和(基于TicketMetaDataModel.modifier修改器属性)由用户从莱佛士表分组,以以下格式返回结果:
名、姓、总分 e、 g.:
Rob Stark 26
Stan Clark 26
Tom Dark 21
我试过以下方法(但没能再进一步):
query = db.session.query(RaffleModel.id, UserModel.first_name, UserModel.last_name, TicketMetaDataModel.modifier)
query = query.join(UserModel).join(TicketMetaDataModel)
results = query.all()
results equals:
[(1, 'Rob', 'Stark', 21), (2, 'Stan', 'Clark', 21), (3, 'Tom', 'Dark', 21),(4, 'Rob', 'Stark', 5), (5, 'Stan', 'Clark', 5)]
我知道这很难消化,但任何帮助都将不胜感激
这引起了我的兴趣,我做了一个独立的例子
运行它,它返回
如果
RaffleModel
是UserModel
和TicketMetadataModel
之间的多对多关系的关联表,那么您的模型将受益匪浅如果我答对了你的问题。您正在尝试按已通过联接获得的值进行分组。你知道吗
它应该会给你要求的结果
相关问题 更多 >
编程相关推荐