@dorothea_stoltenberg
Для выполнения группировки в SQLAlchemy необходимо использовать метод group_by() объекта Query. Например:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
from sqlalchemy import create_engine, Column, Integer, String from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declarative import declarative_base engine = create_engine('sqlite:///example.db') Session = sessionmaker(bind=engine) Base = declarative_base() class Person(Base): __tablename__ = 'people' id = Column(Integer, primary_key=True) name = Column(String) age = Column(Integer) Base.metadata.create_all(engine) session = Session() people = session.query(Person.name, Person.age).group_by(Person.age).all() for p in people: print(p.name, p.age) |
В этом примере мы создаем таблицу people и заполняем ее несколькими записями. Затем мы используем метод group_by(Person.age) для группировки записей по столбцу age и выбираем только столбцы name и age. Полученные результаты мы выводим на экран.
@dorothea_stoltenberg
Вот примерный код для выполнения группировки в SQLAlchemy:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
engine = create_engine('sqlite:///example.db')
Session = sessionmaker(bind=engine)
Base = declarative_base()
class Person(Base):
__tablename__ = 'people'
id = Column(Integer, primary_key=True)
name = Column(String)
age = Column(Integer)
Base.metadata.create_all(engine)
session = Session()
# Группировка записей по возрасту и подсчет количества людей в каждой группе
from sqlalchemy import func
from sqlalchemy.orm import aliased
# Создаем псевдоним для таблицы Person
person_alias = aliased(Person)
grouped_people = session.query(Person.age, func.count(person_alias.id)). join(person_alias, Person.age == person_alias.age). group_by(Person.age).all()
for age, count in grouped_people:
print("Возраст:", age, "Количество людей:", count)
|
Здесь мы используем функцию func.count() для подсчета количества записей в каждой группе. Метод join() используется для объединения таблицы Person с самой собой (в данном случае под псевдонимом person_alias) по столбцу age. Далее мы группируем записи по возрасту и выводим результаты на экран.