Метод get_check_constraints
Метод get_check_constraints класса Inspector
возвращает информацию о CHECK-ограничениях указанной
таблицы. Метод принимает имя таблицы, а также
необязательные параметры schema и
kw. В результате возвращается список словарей,
каждый из которых описывает одно CHECK-ограничение
и содержит ключи name, sqltext
и dialect_options.
Синтаксис
inspector.get_check_constraints(table_name, [schema], [**kw])
Пример
Давайте создадим таблицу с CHECK-ограничением и получим информацию о нем через инспектор:
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, CheckConstraint
from sqlalchemy import inspect
engine = create_engine('sqlite:///:memory:')
metadata = MetaData()
articles = Table(
'articles', metadata,
Column('id', Integer, primary_key=True),
Column('title', String),
Column('status', String),
Column('num', Integer),
CheckConstraint('num > 0', name='positive_num')
)
metadata.create_all(engine)
inspector = inspect(engine)
res = inspector.get_check_constraints('articles')
print(res)
Результат выполнения кода:
[{'name': 'positive_num', 'sqltext': 'num > 0', 'dialect_options': {}}]
Пример
Давайте выведем имя и SQL-текст каждого CHECK-ограничения отдельно:
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, CheckConstraint
from sqlalchemy import inspect
engine = create_engine('sqlite:///:memory:')
metadata = MetaData()
articles = Table(
'articles', metadata,
Column('id', Integer, primary_key=True),
Column('title', String),
Column('status', String),
Column('num', Integer),
CheckConstraint('num > 0', name='positive_num'),
CheckConstraint("status IN ('draft', 'published')", name='valid_status')
)
metadata.create_all(engine)
inspector = inspect(engine)
res = inspector.get_check_constraints('articles')
for constraint in res:
print(constraint['name'], '-', constraint['sqltext'])
Результат выполнения кода:
"positive_num - num > 0"
"valid_status - status IN ('draft', 'published')"
Пример
Давайте посмотрим, что вернет метод для таблицы без CHECK-ограничений:
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String
from sqlalchemy import inspect
engine = create_engine('sqlite:///:memory:')
metadata = MetaData()
articles = Table(
'articles', metadata,
Column('id', Integer, primary_key=True),
Column('title', String),
Column('text', String)
)
metadata.create_all(engine)
inspector = inspect(engine)
res = inspector.get_check_constraints('articles')
print(res)
Результат выполнения кода:
[]
Смотрите также
-
класс
Inspector,
который выполняет инспекцию схемы базы данных -
метод
get_unique_constraints,
который возвращает UNIQUE-ограничения таблицы -
метод
get_foreign_keys,
который возвращает внешние ключи таблицы -
метод
get_pk_constraint,
который возвращает информацию о первичном ключе