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

Класс PrimaryKeyConstraint

Класс PrimaryKeyConstraint создает ограничение первичного ключа для таблицы. Первым параметром передаются имена столбцов, входящих в состав первичного ключа. Дополнительно можно задать имя ограничения параметром name. Первичный ключ обеспечивает уникальность каждой строки таблицы и не допускает значения NULL в своих столбцах.

Синтаксис

PrimaryKeyConstraint(column1, column2, [name])

Пример

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

from sqlalchemy import MetaData, Table, Column, Integer, String, PrimaryKeyConstraint metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer), Column('title', String), PrimaryKeyConstraint('id', name='pk_articles_id') ) for constraint in articles.constraints: print(constraint)

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

"PrimaryKeyConstraint(Column('id', Integer(), table=<articles>, primary_key=True, nullable=False), name='pk_articles_id')"

Пример

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

from sqlalchemy import MetaData, Table, Column, Integer, String, PrimaryKeyConstraint metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer), Column('num', Integer), Column('title', String), PrimaryKeyConstraint('id', 'num', name='pk_articles_id_num') ) print(articles.primary_key)

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

"PrimaryKeyConstraint(Column('id', Integer(), table=<articles>, primary_key=True, nullable=False), Column('num', Integer(), table=<articles>, primary_key=True, nullable=False), name='pk_articles_id_num')"

Пример

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

from sqlalchemy import MetaData, Table, Column, Integer, String, PrimaryKeyConstraint from sqlalchemy.schema import CreateTable from sqlalchemy.dialects import sqlite metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer), Column('title', String), PrimaryKeyConstraint('id', name='pk_articles_id') ) print(CreateTable(articles).compile(dialect=sqlite.dialect()))

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

CREATE TABLE articles ( id INTEGER NOT NULL, title VARCHAR, CONSTRAINT pk_articles_id PRIMARY KEY (id) )

Пример

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

from sqlalchemy import Integer, String, PrimaryKeyConstraint from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' __table_args__ = ( PrimaryKeyConstraint('id', 'num', name='pk_articles_id_num'), ) id: Mapped[int] = mapped_column(Integer) num: Mapped[int] = mapped_column(Integer) title: Mapped[str] = mapped_column(String) print(Article.__table__.primary_key)

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

"PrimaryKeyConstraint(Column('id', Integer(), table=<articles>, primary_key=True, nullable=False), Column('num', Integer(), table=<articles>, primary_key=True, nullable=False), name='pk_articles_id_num')"

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

  • класс Constraint,
    который является базовым классом для всех ограничений
  • класс UniqueConstraint,
    который задает ограничение уникальности
  • класс ForeignKeyConstraint,
    который задает ограничение внешнего ключа
  • класс CheckConstraint,
    который задает проверочное ограничение
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить