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

Атрибут primary_key класса Table

Атрибут primary_key класса Table возвращает объект PrimaryKeyConstraint, который представляет первичный ключ таблицы. Через этот объект можно получить доступ к столбцам, входящим в первичный ключ, их количеству и именам. Атрибут доступен только для чтения и формируется автоматически при создании таблицы на основе параметра primary_key у столбцов.

Синтаксис

table.primary_key

Пример

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

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

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

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

Пример

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

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

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

"id"

Пример

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

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

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

"2"

Пример

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

from sqlalchemy import Table, Column, Integer, String, MetaData metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('num', Integer, primary_key=True), Column('title', String), Column('text', String) ) names = [column.name for column in articles.primary_key.columns] print(', '.join(names))

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

"id, num"

Пример

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

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

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

"True" "False"

Пример

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

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

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

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

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

  • класс Table,
    который представляет таблицу базы данных
  • атрибут columns,
    который хранит коллекцию столбцов таблицы
  • атрибут constraints,
    который содержит все ограничения таблицы
  • атрибут foreign_keys,
    который хранит внешние ключи таблицы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить