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

Тип LargeBinary

Тип LargeBinary используется для хранения бинарных данных в базе данных. Он подходит для сохранения файлов, изображений, хешей, сериализованных объектов и любых других данных, представленных в виде байтов. При создании столбца можно указать необязательный параметр length, который задает максимальную длину значения в байтах.

Синтаксис

LargeBinary(length=None)

Пример

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

from sqlalchemy import create_engine, LargeBinary, Integer, String 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) data: Mapped[bytes] = mapped_column(LargeBinary) engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) with Session(engine) as session: article = Article(title='article', data=b'\x00\x01\x02\x03') session.add(article) session.commit() res = session.query(Article).first() print(res.title) print(res.data)

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

"article" "b'\\x00\\x01\\x02\\x03'"

Пример

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

from sqlalchemy import create_engine, LargeBinary, Integer, String 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) payload: Mapped[bytes] = mapped_column(LargeBinary(255)) engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) with Session(engine) as session: article = Article(title='article', payload='user'.encode('utf-8')) session.add(article) session.commit() res = session.query(Article).first() print(res.payload.decode('utf-8'))

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

"user"

Пример

Давайте посмотрим, какой SQL-запрос генерируется при создании таблицы с полем LargeBinary:

from sqlalchemy import create_engine, LargeBinary, Integer, String from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column from sqlalchemy.schema import CreateTable class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(Integer, primary_key=True) title: Mapped[str] = mapped_column(String) content: Mapped[bytes] = mapped_column(LargeBinary) engine = create_engine('sqlite:///:memory:') print(CreateTable(Article.__table__).compile(engine))

Итоговый SQL запрос:

CREATE TABLE articles ( id INTEGER NOT NULL, title VARCHAR NOT NULL, content BLOB NOT NULL, PRIMARY KEY (id) )

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

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