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

Поле Uuid

Поле Uuid представляет тип данных для хранения универсальных уникальных идентификаторов (UUID). Первым параметром передается флаг as_uuid, который определяет, будут ли значения возвращаться как объекты uuid.UUID или как строки. Тип Uuid автоматически подбирает нативный тип UUID для используемой СУБД.

Синтаксис

Uuid(as_uuid=True)

Пример

Давайте создадим модель с полем типа Uuid и вставим в нее запись:

import uuid from sqlalchemy import create_engine, Uuid, select from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, Session class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[uuid.UUID] = mapped_column(Uuid, primary_key=True) title: Mapped[str] engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) article_id = uuid.uuid4() with Session(engine) as session: session.add(Article(id=article_id, title='article')) session.commit() res = session.scalar(select(Article.id)) print(res) print(type(res))

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

"c2f1b9e0-7a4d-4c1e-9f3a-8b6d2e5f1a7c" "<class 'uuid.UUID'>"

Пример

Давайте отключим параметр as_uuid, чтобы значения возвращались в виде строк:

import uuid from sqlalchemy import create_engine, Uuid, select from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, Session class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[uuid.UUID] = mapped_column(Uuid(as_uuid=False), primary_key=True) title: Mapped[str] engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) article_id = uuid.uuid4() with Session(engine) as session: session.add(Article(id=article_id, title='article')) session.commit() res = session.scalar(select(Article.id)) print(res) print(type(res))

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

"c2f1b9e0-7a4d-4c1e-9f3a-8b6d2e5f1a7c" "<class 'str'>"

Пример

Давайте посмотрим, какой SQL-запрос генерируется при создании таблицы:

import uuid from sqlalchemy import create_engine, Uuid from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column from sqlalchemy.schema import CreateTable class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[uuid.UUID] = mapped_column(Uuid, primary_key=True) title: Mapped[str] engine = create_engine('sqlite:///:memory:') print(CreateTable(Article.__table__).compile(engine))

Итоговый SQL запрос:

CREATE TABLE articles ( id CHAR(32) NOT NULL, title VARCHAR NOT NULL, PRIMARY KEY (id) )

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

  • тип UUID,
    который является диалект-независимым типом UUID
  • тип String,
    который хранит строковые значения
  • тип LargeBinary,
    который хранит бинарные данные
  • тип Integer,
    который хранит целые числа
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить