Метод get_unique_constraints
Метод get_unique_constraints класса Inspector
возвращает информацию об уникальных ограничениях
(unique constraints) указанной таблицы. Первым
параметром метод принимает имя таблицы. Вторым
необязательным параметром передается имя схемы.
Метод возвращает список словарей, каждый из которых
описывает одно уникальное ограничение и содержит
ключи name и column_names.
Синтаксис
inspector.get_unique_constraints(table_name, [schema])
Пример
Давайте создадим таблицу с уникальным ограничением и получим информацию о нем через инспектор:
from sqlalchemy import create_engine, inspect, text
engine = create_engine('sqlite:///:memory:')
with engine.connect() as conn:
conn.execute(text('''
CREATE TABLE articles (
id INTEGER PRIMARY KEY,
title VARCHAR(100),
text TEXT,
status VARCHAR(50),
num INTEGER,
CONSTRAINT uq_article_title UNIQUE (title)
)
'''))
conn.commit()
inspector = inspect(engine)
res = inspector.get_unique_constraints('articles')
print(res)
Результат выполнения кода:
[{'name': 'uq_article_title', 'column_names': ['title']}]
Пример
Давайте создадим таблицу с составным уникальным ограничением по нескольким столбцам:
<+python+>
from sqlalchemy import create_engine, inspect, text
engine = create_engine('sqlite:///:memory:')
with engine.connect() as conn:
conn.execute(text('''
CREATE TABLE articles (
id INTEGER PRIMARY KEY,
title VARCHAR(100),
text TEXT,
status VARCHAR(50),
num INTEGER,
CONSTRAINT uq_article_title_status UNIQUE (title, status)
)
'''))
conn.commit()
inspector = inspect(engine)
res = inspector.get_unique_constraints('articles')
print(res)
<-python+>
Результат выполнения кода:
[{'name': 'uq_article_title_status', 'column_names': ['title', 'status']}]
Пример
Давайте переберем все уникальные ограничения таблицы и выведем их имена и столбцы:
from sqlalchemy import create_engine, inspect, text
engine = create_engine('sqlite:///:memory:')
with engine.connect() as conn:
conn.execute(text('''
CREATE TABLE articles (
id INTEGER PRIMARY KEY,
title VARCHAR(100),
text TEXT,
status VARCHAR(50),
num INTEGER,
CONSTRAINT uq_article_title UNIQUE (title),
CONSTRAINT uq_article_num UNIQUE (num)
)
'''))
conn.commit()
inspector = inspect(engine)
res = inspector.get_unique_constraints('articles')
for constraint in res:
print(constraint['name'], '-', constraint['column_names'])
Результат выполнения кода:
"uq_article_title - ['title']"
"uq_article_num - ['num']"
Смотрите также
-
класс
Inspector,
который представляет инспектор схемы базы данных -
метод
get_indexes,
который возвращает информацию об индексах таблицы -
метод
get_pk_constraint,
который возвращает информацию о первичном ключе -
метод
get_check_constraints,
который возвращает информацию о CHECK-ограничениях