PGPackWriter

PGPackWriter(
fileobj,
metadata=None,
compression_method=CompressionMethod.ZSTD,
)
Параметры:
  • fileobj (BufferedWriter) – Файловый объект для записи

  • metadata (bytes | None) – Метаданные в байтах (опционально)

  • compression_method (CompressionMethod) – Метод сжатия данных

Основной класс для записи файлов формата PGPack.

Описание:

Осуществляет полный цикл создания PGPack файлов: генерацию метаданных, сжатие данных, формирование заголовка и запись в файл. Поддерживает различные источники данных и методы сжатия.

Атрибуты:

metadata: bytes | None

Метаданные в JSON формате (генерируются автоматически или предоставляются).

columns: list[str]

Список имен колонок (извлекается из метаданных).

pgtypes: list[PGOid]

Список OID типов данных PostgreSQL.

compression_method: CompressionMethod

Используемый метод сжатия данных.

pgcopy_data_length: int

Размер несжатых данных (-1 до записи).

pgcopy_compressed_length: int

Размер сжатых данных (0 до записи).

Методы:

from_rows(dtype_values)
Параметры:

dtype_values (Iterable[Any]) – Итерируемый объект с данными

Результат:

Строковое представление созданного файла

Тип результата:

str

Запись данных из Python итерируемого объекта.

from_pandas(data_frame)
Параметры:

data_frame (pandas.DataFrame) – DataFrame pandas

Результат:

Строковое представление созданного файла

Тип результата:

str

Запись данных из pandas DataFrame (метаданные генерируются автоматически).

from_polars(data_frame)
Параметры:

data_frame (polars.DataFrame) – DataFrame polars

Результат:

Строковое представление созданного файла

Тип результата:

str

Запись данных из polars DataFrame (метаданные генерируются автоматически).

from_bytes(bytes_data)
Параметры:

bytes_data (Iterable[bytes]) – Итерируемый объект с байтовыми данными PGCopy

Результат:

Строковое представление созданного файла

Тип результата:

str

Запись готовых байтовых данных PGCopy.

tell()
Результат:

Текущая позиция записи

Тип результата:

int

Получение позиции в файле.

close()

Закрытие файлового объекта и освобождение ресурсов.

Процесс записи:

  1. Генерация/проверка метаданных

  2. Сжатие метаданных zlib

  3. Запись заголовка и метаданных

  4. Сжатие данных выбранным методом (LZ4/ZSTD/NONE)

  5. Запись данных

  6. Обновление размеров в заголовке

Особенности:

  • Автоматическая генерация метаданных для pandas/polars DataFrame

  • Поддержка потоковой записи больших объемов данных

  • Корректное обновление размеров данных после записи

  • Оптимизация памяти при сжатии

Использование:

Для создания архивов данных в формате PGPack.