Бесплатный вебинар
«как найти любимую работу»
Подарки на 150 000 ₽ за участие
Живой эфир
Записи не будет!
00:00:00:00
дн.ч.мин.сек.

Выбор уникальных значений столбца в SQLAlchemy/Elixir

Быстрый ответ

Чтобы извлечь уникальные значения из колонки name в модели User с использованием SQLAlchemy, воспользуйтесь функцией distinct() следующим образом:

Python
Скопировать код
# Получаем список уникальных имен пользователей
unique_names = [name[0] for name in session.query(User.name).distinct()]

Функция distinct() оставляет только уникальные значения из колонки name.

Кинга Идем в IT: пошаговый план для смены профессии

SQLAlchemy: Подсчитываем единорогов, то есть, уникальные значения

Для подсчёта уникальных значений, используйте следующий подход SQLAlchemy:

Python
Скопировать код
from sqlalchemy import func

# Определяем количество уникальных имен пользователей
count_unique_names = session.query(func.count(func.distinct(User.name))).scalar()

Комбинированный использование функций distinct() и count() поможет вам определить количество уникальных имён, схоже с подсчётом редких существ в волшебном лесу.

Руководство по эффективным запросам

Если вам требуются только определённые данные, вы можете использовать options(load_only(*columns)), чтобы уменьшить количество извлекаемой информации:

Python
Скопировать код
from sqlalchemy.orm import load_only

# Сфокусироваться только на необходимых данных
minimal_data = session.query(User).options(load_only('name')).distinct()

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

Извлекаем результаты

После применения distinct() необходимо извлечь результаты. В этом помогут списковые выражения:

Python
Скопировать код
# Формируем список уникальных имен
unique_names = [result.name for result in session.query(User.name).distinct()]

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

Визуализация

Восприятие уникальных значений колонок становится более наглядным благодаря таблице данных:

ID ЗельяЭффект
1Невидимость
2Исцеление
3Невидимость
4Сила
5Исцеление
SQL
Скопировать код
SELECT DISTINCT Effect FROM potions;

В результате получаем уникальные эффекты, представленные единожды:

Эффект
Невидимость🌟
Исцеление🌟
Сила🌟

Такой подход помогает обойти дублирующиеся значения.

Умение работать в сложных ситуациях

Применение фильтров с distinct

Применяйте следующий метод, чтобы фильтровать выборку уникальных значений:

Python
Скопировать код
# Выбираем уникальные зелья с эффектом "Сила"
unique_strong_potions = session.query(Potion.name).filter(Potion.effect == 'Strength').distinct()

Сначала производится отбор зелий с эффектом 'Сила', и затем distinct() выделет из них уникальные названия.

Подробнее об этом расскажет наш спикер на видео
skypro youtube speaker

Агрегация уникальных значений

Для выведения дополнительной информации из уникальных значений используйте следующие запросы:

Python
Скопировать код
from sqlalchemy import func

# Находим зелье с максимальной силой
strongest_potion = session.query(func.max(Potion.strength)).filter(Potion.effect == 'Strength').scalar()

Такой запрос выводит зелье с максимальной силой среди зелий с эффектом 'Сила'.

Обеспечение точности результатов

Для проверки точности результата смотрите на сгенерированный SQL-запрос:

Python
Скопировать код
query = session.query(User.name).distinct()
print(query)
# Пример SQL-запроса

Просмотр SQL-запроса позволяет убедиться в его правильности, сравнивая его с конечным списком, например, перед выходом из магазина.

Полезные материалы

  1. Query API — Документация SQLAlchemy 1.4 — основной ресурс информации по использованию distinct() в запросах SQLAlchemy.
  2. Object Relational Tutorial (1.x API) — Документация SQLAlchemy 1.4 — практическое пособие по использованию ORM в SQLAlchemy.
  3. GitHub – elixir-lang/elixir: Elixir – это динамический, функциональный язык программирования для создания масштабируемых и удобных в обслуживании приложений — официальная страница Elixir на GitHub.
  4. ORM Querying Guide — Документация SQLAlchemy 1.4 — детальное описание способов формировать запросы в ORM SQLAlchemy.
  5. SQLAlchemy — pysheeet — наглядный справочник по SQLAlchemy с полезными рекомендациями.
Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Как извлечь уникальные значения из колонки `name` в модели `User`?
1 / 5