Я пытаюсь собрать две таблицы, чтобы получить нужные мне данные с помощью flask -sqlalchemy. Таблица «Место проведения» содержит город и штат места проведения, а таблица «Показать» отслеживает представления для каждого места проведения. Мне нужен запрос, чтобы сгруппировать объекты по городу и штату, а затем подсчитать количество шоу, где start_time больше, чем сейчас. Пока все, что у меня есть, это:
query = db.session.query(Venue.city, Venue.state, Venue.name, Venue.id, Show.venue_id, Show.start_time).group_by(Venue.city)
, но я не знаю, где оттуда go и даже если это правильная отправная точка. Это мои модели:
class Venue(db.Model):
__tablename__ = 'venue'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String())
city = db.Column(db.String(120))
state = db.Column(db.String(120))
address = db.Column(db.String(120))
phone = db.Column(db.String(120))
image_link = db.Column(db.String(500))
facebook_link = db.Column(db.String(120))
seeking_talent = db.Column(db.Boolean, default=False)
seeking_description = db.Column(db.String())
genres = db.Column(db.ARRAY(db.String))
website = db.Column(db.String())
pastshows = db.relationship('Show', backref='pastshows', lazy=True)
class Show(db.Model):
__tablename__ = 'show'
id = db.Column(db.Integer, primary_key=True)
venue_id = db.Column(db.Integer, db.ForeignKey('venue.id'), nullable=False)
artist_id = db.Column(db.Integer, db.ForeignKey('artist.id'), nullable=False)
artist_name = db.Column(db.String())
venue_name = db.Column(db.String())
venue_image = db.Column(db.String())
start_time = db.Column(db.DateTime(), nullable=False)
, и это данные, которые мне нужны:
data=[{
"city": "San Francisco",
"state": "CA",
"venues": [{
"id": 1,
"name": "The Musical Hop",
"num_upcoming_shows": 0,
}, {
"id": 3,
"name": "Park Square Live Music & Coffee",
"num_upcoming_shows": 1,
}]
}, {
"city": "New York",
"state": "NY",
"venues": [{
"id": 2,
"name": "The Dueling Pianos Bar",
"num_upcoming_shows": 0,
}]
}]
Может ли кто-нибудь помочь мне с этим запросом?