sqlalchemy включить всю строку в список при группировке
От: qtprogger  
Дата: 09.01.21 19:49
Оценка:
Имеется табличка
> select * from "Book";
 id |    date    | title | author |   genre    
----+------------+-------+--------+------------
  1 | 2019-01-01 | AAA   | B      | fantastic
  2 | 2019-01-02 | BBB   | C      | fantastic
  3 | 2019-01-02 | 1111  | 2      | technology
  4 | 2019-01-02 | 3333  | 4      | technology
  5 | 2019-01-02 | 7777  | 88     | technology


session.query(Book.genre, func.array_agg(Book.id, type_=ARRAY(Integer))).group_by(Book.genre)
# ('fantastic', [1, 2])
# ('technology', [3, 4, 5])

Помогите сформировать агреггирующую функцию так, чтобы в списках находились не идентификаторы, а строки из Book целиком
# ('fantastic', [(1, 2019-01-01, AAA, B), (2, 2019-01-02, BBB, C)])
# ('technology', [(3, 2019-01-02, 1111, 2), (4, 2019-01-02, 3333, 4), (5, 2019-01-02, 7777, 88)])
sqlalchemy python orm groupby
Re: sqlalchemy включить всю строку в список при группировке
От: Ватакуси Россия  
Дата: 13.01.21 11:37
Оценка:
Здравствуйте, qtprogger, Вы писали:

Q>Имеется табличка

Q>
>> select * from "Book";
Q> id |    date    | title | author |   genre    
Q>----+------------+-------+--------+------------
Q>  1 | 2019-01-01 | AAA   | B      | fantastic
Q>  2 | 2019-01-02 | BBB   | C      | fantastic
Q>  3 | 2019-01-02 | 1111  | 2      | technology
Q>  4 | 2019-01-02 | 3333  | 4      | technology
Q>  5 | 2019-01-02 | 7777  | 88     | technology
Q>


Q>
Q>session.query(Book.genre, func.array_agg(Book.id, type_=ARRAY(Integer))).group_by(Book.genre)
Q># ('fantastic', [1, 2])
Q># ('technology', [3, 4, 5])
Q>

Q>Помогите сформировать агреггирующую функцию так, чтобы в списках находились не идентификаторы, а строки из Book целиком
Q>
Q># ('fantastic', [(1, 2019-01-01, AAA, B), (2, 2019-01-02, BBB, C)])
Q># ('technology', [(3, 2019-01-02, 1111, 2), (4, 2019-01-02, 3333, 4), (5, 2019-01-02, 7777, 88)])
Q>



Там можно session.execute(ТВОЙ_СКУЛ) вызывать, с нормальным SQL-ем.
Все будет Украина!
Re: sqlalchemy включить всю строку в список при группировке
От: Буравчик Россия  
Дата: 22.01.21 13:56
Оценка:
Здравствуйте, qtprogger, Вы писали:

Q>Помогите сформировать агреггирующую функцию так, чтобы в списках находились не идентификаторы, а строки из Book целиком


func.array_agg(func.distinct(table.column_a, table.column_b)).label('my_label')
Best regards, Буравчик
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.