Выборка данных — одна из наиболее частых операций при работе с базами данных. SQLAlchemy Core предоставляет обширный и гибкий инструментарий для этой цели, позволяя извлекать информацию максимально эффективно и удобно. Давайте подробно рассмотрим этот процесс.
from sqlalchemy import create_engine, MetaData, Table, select
engine = create_engine('sqlite:///:memory:')
metadata = MetaData()
users = Table('users', metadata, autoload_with=engine)
sel = select([users])
result = engine.connect().execute(sel)
for row in result:
print(row)
Здесь select([users])
создает запрос SELECT
для таблицы users
. Запрос выполняется с помощью engine.connect().execute(sel)
, и результат итерируется для вывода строк.
sel = select([users]).where(users.c.id == 5)
result = engine.connect().execute(sel)
for row in result:
print(row)
С помощью метода where()
, вы можете указать условие для вашего запроса, аналогично SQL-оператору WHERE
.
from sqlalchemy import desc
sel = select([users]).order_by(desc(users.c.name))
result = engine.connect().execute(sel)
for row in result:
print(row)
Метод order_by()
используется для сортировки результатов. В примере выше результаты сортируются по убыванию на основе имени.
sel = select([users]).limit(5).offset(10)
result = engine.connect().execute(sel)
for row in result:
print(row)
Методы limit()
и offset()
позволяют ограничивать количество возвращаемых строк и пропускать определенное количество строк соответственно.
from sqlalchemy import func
sel = select([users.c.age, func.count(users.c.id)]).group_by(users.c.age)
result = engine.connect().execute(sel)
for row in result:
print(row)
Здесь мы используем функции агрегации, такие как func.count()
, и группируем результаты по определенным полям с помощью group_by()
.
Выборка данных — ключевой этап в работе с реляционными базами данных, и SQLAlchemy Core предоставляет разработчикам мощные и гибкие инструменты для этой цели. Осваивая различные методы и функции выборки, вы можете максимально эффективно взаимодействовать с данными и извлекать из вашей базы данных максимум полезной информации.
Содержание: