РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
394 of 711 menu

Тип 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,
    который хранит большие бинарные данные
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить