Похожие чаты

Привет! Хочу запрашивать индивидуально колонки у Player. У Player с Team

many-to-many связь. Хочу, чтобы в Player лежали все его команды. Код ниже почти привёл к результату, но он выдаёт несколько игроков с одинаковым id и разными командами.

Можно как–то средствами Алхимии собрать команды одного игрока в массив, чтобы строки с одинаковым id игрока не множились?

query = select(
Player.id,
Team
) \
.join(Player.teams) \
.where(Player.id == player_id)

16 ответов

13 просмотров

зачем тебе инживидуальные колонки?

dmitry-bleschunov Автор вопроса
Tishka17
зачем тебе инживидуальные колонки?

Для вопроса я упростил, но вообще там сложные колонки с конкатенацией и всем таким

dmitry-bleschunov Автор вопроса

Помогите пожалуйста

ну, можно, конечно, сбоку сделать модель, которая будет отображать историю нахождения в командах. и активная команда будет булевым полем обозначаться встречный вопрос есть, почему у игроков ид одинаковые?

dmitry-bleschunov Автор вопроса

Одинаковый айди, потому что раздваиваются строки. Потому что к одному игроку много команд джоинится. Вопрос в том, как собрать эти команды в массив и присвоить игроку, чтобы была одна строка с игроком, и у него поле teams: list[Team]

dmitry-bleschunov Автор вопроса
Eugene
а, ну, one-to-many в доке

только это many-to-many

dmitry bleschunov
Одинаковый айди, потому что раздваиваются строки. ...

я запутался) ты говоришь "присвоить игроку, чтобы была одна строка с игроком, и у него поле teams: list[Team]"

dmitry-bleschunov Автор вопроса
Eugene
я запутался) ты говоришь "присвоить игроку, чтобы...

Код, который я прислал даёт такой результат player_id: 10, team: {team_id: 10} player_id: 10, team: {team_id: 20} а я хочу чтобы было так player_id: 10, teams: [{team_id: 10}, {team_id: 20}]

dmitry bleschunov
Код, который я прислал даёт такой результат playe...

либо кастомным методом для экземляра класса + group_by

dmitry-bleschunov Автор вопроса
Glukhov Sergey
func.array_agg()

query = select( Player.id, func.array_agg(Team) ) \ .join(Player.teams) \ .where(Player.id == player_id) SQL expression element expected, got Team

dmitry bleschunov
query = select( Player.id, func.ar...

Вот пример https://stackoverflow.com/questions/23261944/sqlalchemy-postgresql-and-array-agg-how-to-select-items-from-array-agg

dmitry-bleschunov Автор вопроса
Glukhov Sergey
Вот пример https://stackoverflow.com/questions/2...

Уже открыт этот пример, спасибо

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Anyone knows where there are some instructions or discort about failed bridge transactions ?
Jochem
21
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Also, why can’t the community have a vote/ say when it comes to initiatives like buybacks. Isn’t the point of crypto decentralisation? Don’t we deserve input as long term supp...
👨🏽‍🦰
13
Привет)) уже кажется эту тему перемусолили, но вот я так и не понял. Я сейчас сижу на 27дюймов 2к мониторе. На Актуальной макоси, если я куплю 27д 4к монитор: - будет ли изобр...
Vladislav Piskunov
16
any reference of this implementation?
BitBuddha
29
Hi guys, any problem with Pulsebrige? Trying to transfer from wETH to ETH. First it tells me to connect my metamask "through mobile app" not desktop. Then I did and confirmed ...
Snowflakecrypto
13
Страшнейшая правда про списки ЦБ. С первых дней жизни P2P сферы, молодые человеки, начитавшись законодательной базы и "внутренних" документов, решили, что им противостоит сер...
Foxcool
3
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Карта сайта