Метод append_constraint
Метод append_constraint класса Table добавляет
объект ограничения к таблице. Первым параметром
метод принимает объект ограничения, например
Constraint, PrimaryKeyConstraint,
UniqueConstraint, CheckConstraint или
ForeignKeyConstraint. Ограничение добавляется
в коллекцию constraints таблицы.
Синтаксис
Table.append_constraint(constraint)
Пример
Давайте создадим таблицу и добавим к ней
ограничение уникальности через метод
append_constraint:
from sqlalchemy import MetaData, Table, Column, Integer, String
from sqlalchemy import UniqueConstraint
metadata = MetaData()
articles = Table(
'articles',
metadata,
Column('id', Integer, primary_key=True),
Column('title', String)
)
uq = UniqueConstraint('title', name='uq_articles_title')
articles.append_constraint(uq)
print(articles.constraints)
Результат выполнения кода:
{UniqueConstraint('title', name='uq_articles_title')}
Пример
Давайте добавим к таблице ограничение проверки
через метод append_constraint:
from sqlalchemy import MetaData, Table, Column, Integer, String
from sqlalchemy import CheckConstraint
metadata = MetaData()
articles = Table(
'articles',
metadata,
Column('id', Integer, primary_key=True),
Column('num', Integer)
)
ck = CheckConstraint('num > 0', name='ck_articles_num')
articles.append_constraint(ck)
for constraint in articles.constraints:
print(constraint.name)
Результат выполнения кода:
"ck_articles_num"
Пример
Давайте создадим таблицу с ограничением
внешнего ключа и добавим его через метод
append_constraint, а затем создадим
таблицу в базе данных:
from sqlalchemy import MetaData, Table, Column, Integer, String
from sqlalchemy import ForeignKeyConstraint, create_engine
metadata = MetaData()
users = Table(
'users',
metadata,
Column('id', Integer, primary_key=True),
Column('name', String)
)
articles = Table(
'articles',
metadata,
Column('id', Integer, primary_key=True),
Column('user_id', Integer)
)
fk = ForeignKeyConstraint(['user_id'], ['users.id'])
articles.append_constraint(fk)
engine = create_engine('sqlite:///:memory:')
metadata.create_all(engine)
print(articles.constraints)
Результат выполнения кода:
{ForeignKeyConstraint(['user_id'], ['users.id'])}
Итоговый SQL запрос:
CREATE TABLE articles (
id INTEGER NOT NULL,
user_id INTEGER,
PRIMARY KEY (id),
FOREIGN KEY(user_id) REFERENCES users (id)
)
Смотрите также
-
класс
Table,
который представляет таблицу базы данных -
метод
append_column,
который добавляет колонку к таблице -
атрибут
constraints,
который хранит коллекцию ограничений таблицы -
метод
create,
который создает таблицу в базе данных