PGCopyWriter

class PGCopyWriter(file, pgtypes)
Параметры:
  • file (BufferedWriter | None) – Файловый объект для записи (или None для генерации)

  • pgtypes (list[PGOid]) – Список OID типов данных колонок

Основной класс для записи данных в бинарный формат PGCOPY.

Описание:

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

Атрибуты:

num_columns: int

Количество колонок (определяется из pgtypes).

num_rows: int

Количество записанных строк.

pos: int

Позиция записи (количество записанных байт).

postgres_dtype: list[PostgreSQLDtype]

Список типов данных для каждой колонки.

Методы:

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

dtype_values (Any) – Значения строки для записи

Результат:

Генератор байтовых представлений колонок

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

Generator[Any, None, None]

Формирует одну строку данных в бинарном формате.

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

dtype_values (list[Any]) – Список строк для записи

Результат:

Генератор байтовых данных

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

Generator[bytes, None, None]

Генерирует полный бинарный дамп для списка строк.

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

dtype_values (list[Any]) – Список строк для записи

Записывает данные непосредственно в файл.

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

Количество записанных байт

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

int

Получение позиции записи.

close()

Закрытие файлового объекта.

Строковое представление:

При выводе в консоли показывает таблицу с информацией о колонках:

<PGCopy dump writer>
┌─────────────────┬─────────────────┐
│ Column Number   │ PostgreSQL Type │
╞═════════════════╪═════════════════╡
│ Column_0        │ int4            │
├─────────────────┼─────────────────┤
│ Column_1        │ text            │
└─────────────────┴─────────────────┘
Total columns: 2
Total rows: 0

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

  • Генерация корректного заголовка с сигнатурой PGCOPY\n\xff\r\n\x00

  • Поддержка NULL значений через nullable_writer

  • Автоматическое определение функций записи по OID

  • Возможность записи как в файл, так и в память

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

Для экспорта данных в бинарный формат PGCOPY.