РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
427 of 711 menu

Функция cast

Функция cast приводит значение к заданному типу данных. Первым параметром функция принимает выражение или колонку, которую нужно преобразовать, а вторым - целевой тип данных. Это полезно, когда нужно сравнить значения разных типов или явно указать СУБД, как интерпретировать данные.

Синтаксис

cast(expression, type_)

Пример

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

from sqlalchemy import cast, Integer, String, select from sqlalchemy import create_engine, text engine = create_engine('sqlite:///:memory:') with engine.connect() as conn: stmt = select(cast('123', Integer)) res = conn.execute(stmt).scalar() print(res)

Результат выполнения кода:

123

Пример

Давайте приведем число к строковому типу:

from sqlalchemy import cast, String, Integer, select from sqlalchemy import create_engine engine = create_engine('sqlite:///:memory:') with engine.connect() as conn: stmt = select(cast(456, String)) res = conn.execute(stmt).scalar() print(res)

Результат выполнения кода:

"456"

Пример

Давайте создадим таблицу articles и приведем значение колонки num к строковому типу:

from sqlalchemy import create_engine, cast, String, select from sqlalchemy import Integer, Column, MetaData, Table, insert engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), Column('num', Integer) ) metadata.create_all(engine) with engine.connect() as conn: conn.execute(insert(articles), [ {'title': 'article 1', 'num': 10}, {'title': 'article 2', 'num': 20} ]) stmt = select(articles.c.title, cast(articles.c.num, String)) res = conn.execute(stmt).fetchall() for row in res: print(row)

Результат выполнения кода:

('article 1', '10') ('article 2', '20')

Пример

Давайте используем cast вместе с функцией func.length для получения длины строки в виде числа:

from sqlalchemy import create_engine, cast, Integer, select, func engine = create_engine('sqlite:///:memory:') with engine.connect() as conn: stmt = select(cast(func.length('article'), Integer)) res = conn.execute(stmt).scalar() print(res)

Результат выполнения кода:

7

Смотрите также

  • функцию try_cast,
    которая пытается привести тип и возвращает NULL при ошибке
  • функцию type_coerce,
    которая указывает тип без генерации CAST в SQL
  • функцию extract,
    которая извлекает часть даты или времени
  • функцию literal,
    которая создает литеральное значение для запроса
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить