#python #flask #sqlalchemy #flask-sqlalchemy #flask-restx
Вопрос:
Я делаю проект в Flask, у меня возникли трудности с Flask-SQLAlchemy.
class Films(db.Model):
"""Main film table"""
__tablename__ = 'films'
film_id = db.Column(db.Integer, primary_key=True)
film_name = db.Column(db.Text, unique=False, nullable=False, index=True)
class Genres(db.Model):
"""Table with genres"""
__tablename__ = 'genres'
genre_id = db.Column(db.Integer, primary_key=True)
genre_name = db.Column(db.String(20), unique=True, nullable=False)
gen_films = db.relationship(
'Films', secondary=films_genres, lazy='subquery',
backref=db.backref('gen_films', lazy='joined'))
# Association table for table films and table genres
films_genres = db.Table(
'films_genres',
db.Column('films_film_id', db.Integer, db.ForeignKey('films.film_id')),
db.Column('genres_genre_id', db.Integer, db.ForeignKey('genres.genre_id')))
all_films = Films.query.select_from(Films).join(films_genres).join(Genres).filter(
(films_genres.c.films_film_id == Films.film_id) amp; (films_genres.c.genres_genre_id == Genres.genre_id))
.add_columns(
Films.film_name,
Genres.genre_name
).paginate()
Когда я делаю запрос, я получаю такой результат:
[(<Films 1>, 'The Shawshank Redemption', 'Action'), (<Films 1>, 'The Shawshank Redemption', 'Crime')] ...
Как я могу повторить запрос, чтобы получить такой результат?
[(<Films 1>, 'The Shawshank Redemption', ('Action', 'Crime')]
Или что-то подобное, чтобы список жанров составлял одну строку, чтобы в дальнейшем перенести это в flask_restx -> Resource -> json
Комментарии:
1. Попробуйте сгруппировать результат newbedev.com/group-by-count-function-in-sqlalchemy
2. Добавлена группа по
Films.query.select_from(Films).join(films_genres).join(Genres).filter( (films_genres.c.films_film_id == Films.film_id) amp; (films_genres.c.genres_genre_id == Genres.genre_id)) .add_columns(Films.film_name, Genres.genre_name).group_by( Films.film_name, Genres.genre_name).paginate()
, но получена ошибка :[parameters: {'param_1': 20, 'param_2': 0}] (Background on this error at: https://sqlalche.me/e/14/f405)
3. Я пытался воспроизвести ваши модели в течение последних часов, но я продолжаю получать ошибки
4. Можете ли вы указать текст ошибки над этим сообщением
5. Сори gist.github.com/di2mot/6e4e1cc0c6ae81d2159f7ed46063615b