Атрибут comment класса Column
Атрибут comment класса Column хранит
текстовый комментарий к столбцу таблицы.
Комментарий задается параметром comment
при создании столбца и попадает в DDL-выражение
CREATE TABLE, если это поддерживает диалект СУБД.
Значением атрибута является строка или
None, если комментарий не задан.
Синтаксис
Column(comment='текст комментария')
Пример
Давайте создадим столбец с комментарием
и прочитаем его через атрибут comment:
from sqlalchemy import Column, Integer, String
id_col = Column(Integer, primary_key=True, comment='article identifier')
title_col = Column(String, comment='article title')
print(id_col.comment)
print(title_col.comment)
Результат выполнения кода:
"article identifier"
"article title"
Пример
Давайте посмотрим на значение атрибута, когда комментарий не задан:
from sqlalchemy import Column, Integer
num_col = Column(Integer)
print(num_col.comment)
Результат выполнения кода:
None
Пример
Давайте объявим модель с комментариями к столбцам и создадим таблицу:
from sqlalchemy import Column, Integer, String, Text, create_engine
from sqlalchemy.orm import DeclarativeBase
class Base(DeclarativeBase):
pass
class Article(Base):
__tablename__ = 'articles'
id = Column(Integer, primary_key=True, comment='article identifier')
title = Column(String, comment='article title')
text = Column(Text, comment='article body')
status = Column(String, comment='article status')
num = Column(Integer, comment='article number')
engine = create_engine('sqlite:///:memory:')
Base.metadata.create_all(engine)
print(Article.__table__.c.id.comment)
print(Article.__table__.c.title.comment)
Результат выполнения кода:
"article identifier"
"article title"
Пример
Давайте посмотрим, как комментарий столбца
попадает в DDL-выражение CREATE TABLE:
from sqlalchemy import Column, Integer, String, create_engine
from sqlalchemy.orm import DeclarativeBase
from sqlalchemy.schema import CreateTable
class Base(DeclarativeBase):
pass
class Article(Base):
__tablename__ = 'articles'
id = Column(Integer, primary_key=True, comment='article identifier')
title = Column(String, comment='article title')
engine = create_engine('sqlite:///:memory:')
print(CreateTable(Article.__table__).compile(engine))
Итоговый SQL запрос:
CREATE TABLE articles (
id INTEGER NOT NULL,
title VARCHAR,
PRIMARY KEY (id)
)