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

Функция identity_key

Функция identity_key из модуля sqlalchemy.orm возвращает ключ идентичности объекта ORM. Ключ идентичности представляет собой кортеж, который однозначно определяет строку в таблице базы данных. Первым параметром можно передать класс модели, а вторым - значение первичного ключа. Также можно передать экземпляр объекта ORM в качестве первого параметра, и функция сама извлечет из него необходимые данные.

Функция полезна при работе с сессией, кешем идентичности и при отладке, когда нужно понять, как SQLAlchemy идентифицирует конкретный объект.

Синтаксис

identity_key(class_, ident) identity_key(instance)

Пример

Давайте получим ключ идентичности для класса модели и значения первичного ключа:

from sqlalchemy import create_engine, Integer, String from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, identity_key class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(primary_key=True) title: Mapped[str] = mapped_column(String) key = identity_key(Article, 1) print(key)

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

(<class '__main__.Article'>, (1,), None)

Пример

Давайте передадим в функцию экземпляр объекта ORM:

from sqlalchemy import create_engine, Integer, String from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, identity_key class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(primary_key=True) title: Mapped[str] = mapped_column(String) article = Article(id=1, title='article') key = identity_key(instance=article) print(key)

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

(<class '__main__.Article'>, (1,), None)

Пример

Давайте сохраним объект в базе данных и получим его ключ идентичности через сессию:

from sqlalchemy import create_engine, Integer, String from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, Session, identity_key class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(primary_key=True) title: Mapped[str] = mapped_column(String) engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) with Session(engine) as session: article = Article(title='article') session.add(article) session.commit() key = identity_key(instance=article) print(key)

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

(<class '__main__.Article'>, (1,), None)

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

  • функцию inspect,
    которая создает объект инспектора для анализа ORM-объектов
  • функцию instance_state,
    которая возвращает состояние экземпляра объекта ORM
  • функцию identity_key,
    которая возвращает ключ идентичности объекта ORM
  • класс Session,
    который управляет жизненным циклом объектов ORM
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить