Тип CLOB
Тип CLOB (Character Large Object)
представляет собой тип данных для хранения
больших текстовых значений. В SQLAlchemy
данный тип транслируется в соответствующий
тип целевой СУБД: CLOB в Oracle,
TEXT в PostgreSQL и MySQL, TEXT
в SQLite. Тип CLOB не принимает
обязательных параметров и может использоваться
как при описании моделей через mapped_column,
так и в явных конструкциях Table.
Синтаксис
from sqlalchemy import CLOB
CLOB()
Пример
Давайте создадим модель статьи с полем
типа CLOB для хранения полного
текста публикации:
from sqlalchemy import CLOB
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase):
pass
class Article(Base):
__tablename__ = 'articles'
id: Mapped[int] = mapped_column(primary_key=True)
title: Mapped[str]
text: Mapped[str] = mapped_column(CLOB)
Пример
Давайте создадим таблицу и вставим в нее запись с большим текстовым значением:
from sqlalchemy import CLOB, String, create_engine
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, Session
class Base(DeclarativeBase):
pass
class Article(Base):
__tablename__ = 'articles'
id: Mapped[int] = mapped_column(primary_key=True)
title: Mapped[str] = mapped_column(String(100))
text: Mapped[str] = mapped_column(CLOB)
engine = create_engine('sqlite:///:memory:')
Base.metadata.create_all(engine)
with Session(engine) as session:
article = Article(title='article', text='long text content')
session.add(article)
session.commit()
res = session.query(Article).first()
print(res.title)
print(res.text)
Результат выполнения кода:
"article"
"long text content"
Пример
Давайте посмотрим, какой SQL-запрос
генерирует SQLAlchemy при создании таблицы
с полем CLOB:
from sqlalchemy import CLOB, Column, Integer, MetaData, String, Table, create_engine
from sqlalchemy.schema import CreateTable
engine = create_engine('sqlite:///:memory:')
metadata = MetaData()
articles = Table(
'articles',
metadata,
Column('id', Integer, primary_key=True),
Column('title', String(100)),
Column('text', CLOB),
)
print(CreateTable(articles).compile(engine))
Итоговый SQL запрос:
CREATE TABLE articles (
id INTEGER NOT NULL,
title VARCHAR(100),
text TEXT,
PRIMARY KEY (id)
)
Смотрите также
-
тип
Text,
который также предназначен для хранения больших текстов -
тип
UnicodeText,
который хранит большие тексты в Unicode -
тип
String,
который хранит строки ограниченной длины -
тип
LargeBinary,
который хранит большие бинарные данные