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

Атрибут primary_key

Атрибут primary_key класса Column определяет, является ли данный столбец частью первичного ключа таблицы. Принимает булево значение: True или False. По умолчанию равен False. Если хотя бы один столбец в таблице имеет primary_key=True, SQLAlchemy создаст первичный ключ при генерации схемы. При использовании декларативных моделей с mapped_column атрибут primary_key также отмечает столбец как ключевой.

Синтаксис

Column(primary_key=False)

Пример

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

from sqlalchemy import Table, Column, Integer, MetaData, String metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), ) print(articles.c.id.primary_key) print(articles.c.title.primary_key)

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

True False

Пример

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

from sqlalchemy import Table, Column, Integer, MetaData, String metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('num', Integer, primary_key=True), Column('title', String), ) for column in articles.primary_key: print(column.name, column.primary_key)

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

id True num True

Пример

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

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

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

True False

Пример

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

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

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

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

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

  • класс Column,
    который представляет столбец таблицы
  • атрибут autoincrement,
    который управляет автоинкрементом первичного ключа
  • атрибут table,
    который возвращает таблицу столбца
  • атрибут nullable,
    который указывает на допустимость NULL
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить