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

Случай

В SQLAlchemy конструкция case используется для выполнения условных выражений и создания условных операторов в SQL-запросах. Это позволяет вам определять условную логику и возвращать разные значения на основе заданных условий.

Конструкция case в SQLAlchemy позволяет создавать выражения SQL, напоминающие оператор SQL CASE. Он имеет следующий синтаксис:

from sqlalchemy import case

case(
    [
        (condition_1, value_1),
        (condition_2, value_2),
        ...
    ],
    else_=default_value
)

Давайте разберем компоненты конструкции case:

  • condition_1, condition_2 и т. д.: это условия, которые вы хотите оценить. Каждое условие может быть выражением SQLAlchemy или логическим выражением.
  • value_1, value_2 и т. д.: это соответствующие значения, которые должны быть возвращены, если соответствующее условие истинно.
  • else_: это необязательный аргумент, указывающий значение по умолчанию, которое будет возвращено, если ни одно из условий не выполняется. Это эквивалентно предложению ELSE в операторе SQL CASE.

Вот пример, демонстрирующий использование case в SQLAlchemy:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, select, case

# Create the engine and connection
engine = create_engine('your_database_connection_string')
connection = engine.connect()

# Define the table
metadata = MetaData()
my_table = Table('my_table', metadata,
                 Column('id', Integer, primary_key=True),
                 Column('score', Integer),
                 Column('grade', String)
                 )

# Create a SELECT statement using case
query = select([
    my_table.c.id,
    my_table.c.score,
    case([
        (my_table.c.score >= 90, 'A'),
        (my_table.c.score >= 80, 'B'),
        (my_table.c.score >= 70, 'C')
    ], else_='D').label('grade')
])

# Execute the query
result = connection.execute(query)


# Print the result
for row in result:
    print(row)

В приведенном выше примере конструкция case используется в операторе select. Он оценивает столбец score таблицы my_table и присваивает оценку на основе оценки. Если оценка больше или равна 90, возвращается «A», если между 80 и 89, возвращается «B», если между 70 и 79, возвращается «C», а для любой другой оценки возвращается «C». возвращает «Д». Затем результат извлекается и распечатывается.

Конструкция case в SQLAlchemy обеспечивает гибкий способ обработки условных выражений и выполнения пользовательских преобразований в ваших запросах SQL.

Функция.сумма()

В SQLAlchemy func.sum() — это функция, представляющая агрегатную функцию SQL SUM. Он используется для вычисления суммы набора значений в SQL-запросе.

Функцию func.sum() можно применить к столбцу или выражению для вычисления суммы его значений. Обычно он используется в сочетании с оператором select для выполнения агрегирования таблицы или подмножества данных.

Вот пример, демонстрирующий использование func.sum() в SQLAlchemy:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, select, func

# Create the engine and connection
engine = create_engine('your_database_connection_string')
connection = engine.connect()

# Define the table
metadata = MetaData()
my_table = Table('my_table', metadata,
                 Column('id', Integer, primary_key=True),
                 Column('value', Integer)
                 )

# Create a SELECT statement using func.sum()
query = select([
    func.sum(my_table.c.value).label('total_sum')
])

# Execute the query
result = connection.execute(query)

# Retrieve the total sum value
total_sum = result.scalar()


# Print the total sum
print("Total sum:", total_sum)

В приведенном выше примере func.sum(my_table.c.value) используется в операторе select для вычисления суммы столбца value в таблице my_table. Результат помечен как total_sum с использованием метода label(). Затем метод result.scalar() используется для получения значения общей суммы.

Функцию func.sum() можно использовать с другими предложениями и функциями в SQLAlchemy для выполнения более сложных вычислений и агрегирования. Он предоставляет способ получить сумму значений в SQL-запросе, позволяя выполнять вычисления с числовыми столбцами или выражениями.

Заключение

В заключение, в этой статье мы рассмотрели две важные функции в SQLAlchemy: конструкцию case и функцию func.sum(). Конструкция case позволяет использовать условные выражения и операторы в запросах SQL, облегчая динамическое присвоение значений на основе условий. Функция func.sum() вычисляет сумму значений в столбце или выражении, позволяя выполнять агрегирование и вычисление общей суммы. Эти функции расширяют возможности SQLAlchemy, позволяя разработчикам писать универсальные и выразительные SQL-запросы в приложениях Python.

Это все для этой статьи! Не стесняйтесь оставлять отзывы или вопросы в комментариях. Если вы нашли это захватывающим чтением, хлопайте в ладоши и подписывайтесь! Я люблю кофе, так что смело купите мне кофе на https://bmc.link/pycodenemesis XD. Ваше здоровье!