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.