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

Поле BLOB

Поле BLOB (Binary Large Object) представляет собой тип данных для хранения больших объемов бинарной информации: изображений, аудио, видео, сериализованных объектов. В SQLAlchemy данный тип реализован классом BLOB, который наследуется от LargeBinary. Первым параметром передается длина поля в символах length, которая используется некоторыми СУБД для определения размера колонки. В отличие от текстовых типов, данные BLOB не подвергаются кодировке и сохраняются в байтовом виде.

Синтаксис

from sqlalchemy import BLOB BLOB(length)

Пример

Давайте создадим таблицу с полем BLOB и сохраним в него бинарные данные:

from sqlalchemy import create_engine, BLOB, Integer, String, select from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, Session class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(Integer, primary_key=True) title: Mapped[str] = mapped_column(String(50)) data: Mapped[bytes] = mapped_column(BLOB) engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) with Session(engine) as session: article = Article(title='article', data=b'\x01\x02\x03\x04') session.add(article) session.commit() res = session.scalar(select(Article).where(Article.title == 'article')) print(res.data)

Результат выполнения кода:

b'\x01\x02\x03\x04'

Пример

Давайте сохраним в поле BLOB текстовые данные, закодированные в байты, и проверим их длину:

from sqlalchemy import create_engine, BLOB, Integer, String, select from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, Session class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(Integer, primary_key=True) title: Mapped[str] = mapped_column(String(50)) payload: Mapped[bytes] = mapped_column(BLOB(255)) engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) with Session(engine) as session: article = Article(title='article', payload='user data'.encode('utf-8')) session.add(article) session.commit() res = session.scalar(select(Article).where(Article.title == 'article')) print(len(res.payload))

Результат выполнения кода:

9

Смотрите также

  • класс LargeBinary,
    который хранит бинарные данные произвольной длины
  • класс PickleType,
    который автоматически сериализует Python-объекты
  • класс String,
    который хранит текстовые данные фиксированной длины
  • класс Text,
    который хранит текстовые данные произвольной длины
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить