Утилиты для работы с системой импорт/экспорта классификаторов в едином формате.
Модуль table_to_file предлагает набор функций для импорта/экспорта таблиц из БД в формат json и обратно.
Структура json'а описана в документации к протоколу передачи классификаторов см раздел "2. Классификатор".
Протокол и структура хранения классификаторов в json, как его составная часть, разрабатываются как общесистемные решения для проектов Лаборатории.
Ограничения:
- Последовательности (Sequences) должны быть в той же схеме, что и таблица их использующая
Интерфейс взаимодействия с модулем.
Модуль представляет API состоящее из 4х методов:
export_table_to_dict - Преобразует таблицу из бд в словарь содержащий структуру и данные таблицы.
Параметры:
table_name- Имя таблицы в базе данных.dbname- Имя базы данных.user- Пользователь БД.password- Пароль пользователя.host- Адрес сервера баз данных.port- Порт сервера баз данных.
Возвращаемое значение:
- Словарь со структурой и данными таблицы. Структура словаря соответствует описанной структуре классификатора в документации к протоколу.
import_table_from_dict - Импортирует данные из словаря подходящей структуры в базу данных.
Поведение зависит от параметра import_mode: если он равен None (по умолчанию), таблица не должна существовать в БД — она будет создана и заполнена данными из словаря. Если он равен update, таблица должна существовать в БД — её данные будут обновлены. В случае нарушения условий существования таблицы, а также при несоответствии структуры описанной в словаре таблице существующей в базе данных поднимается исключение ValueError.
Параметры:
table- Структура таблицы и данные для импорта в виде словаря.table_name- Имя таблицы в базе данных.dbname- Имя базы данных.user- Пользователь БД.password- Пароль пользователя.host- Адрес сервера баз данных.port- Порт сервера баз данных.foreign_tables_mappingСловарь соответствия имен связанных таблиц в словаре и в базе данных. Ключи и значения словаря кортежи состоящие из пары значений ('имя_схемы', 'имя_таблицы') ключ - имена в структуре данных, значения - имена в базе данных. Пример {('имя_схемы_в_структуре', 'имя_таблицы_в_структуре'): ('имя_схемы_в_бд', 'имя_таблицы_в_бд')}import_modeРежим импорта.None- создание новой таблицы (таблица не должна существовать),update- обновление существующей таблицы (таблица должна существовать). По умолчаниюNone.load_dataЗагружать ли данные при создании новой таблицы (import_mode=None).True- структура и данные,False- только структура. По умолчаниюFalse.
Возвращаемое значение:
- нет
dict_as_json - Сохраняет словарь с таблицей в виде json в BytesIO объект
Параметры:
table- Словарь содержащий структуру таблицы для сохранения в json формате.
Возвращаемое значение:
- Объект BytesIO содержащий "файл" с переданной структурой в json формате.
json_to_table - Принимает или путь к файлу с json или BytesIO объект из которого
Параметры:
data_source- Имя файла в системе или объект BytesIO содержащий в себе json соответствующего формата.table_name- Имя таблицы в базе данных.dbname- Имя базы данных.user- Пользователь БД.password- Пароль пользователя.host- Адрес сервера баз данных.port- Порт сервера баз данных.foreign_tables_mappingСловарь соответствия имен связанных таблиц в словаре и в базе данных.import_modeРежим импорта.None- создание новой таблицы (таблица не должна существовать),update- обновление существующей таблицы (таблица должна существовать). По умолчаниюNone.load_dataЗагружать ли данные при создании новой таблицы (import_mode=None).True- структура и данные,False- только структура. По умолчаниюFalse.
Возвращаемое значение:
- нет
Установка и использование
Этот проект использует uv для управления зависимостями.
Установка зависимостей
uv sync
Активация виртуального окружения
uv shell
Установка дополнительных зависимостей для разработки
uv sync --group dev
Запуск тестов.
Для запуска тестов необходимо установленный в системе Docker. Тесты запускаются из директории проекта командой
docker-compose -f docker-compose.pytest.yml run --build --rm tests
Также для запуска можно использовать вариант с двумя последовательными командами
docker-compose -f docker-compose.pytest.yml build --no-cache
docker-compose -f docker-compose.pytest.yml run --rm tests
После тестов желательно удалить созданные контейнеры
docker-compose -f docker-compose.pytest.yml down -v
Альтернатива если в системе установлен make Make for Windows, How to install and use "make" in Windows?
make test
Последние изменения
[0.4.0] - 2026-09-11
Добавлено:
- Параметр
import_modeв функцияхimport_table_from_dictиjson_to_table:None(по умолчанию) - создание новой таблицы (таблица не должна существовать),update- обновление существующей таблицы (таблица должна существовать). - Параметр
load_dataв функцияхimport_table_from_dictиjson_to_table: при создании новой таблицы (import_mode=None) позволяет загружать только структуру (False, по умолчанию) или структуру вместе с данными (True).
Полная история изменений
Смотрите полную историю всех изменений в файле CHANGELOG.md или на странице проекта
Metadata
Release files for json-2-postgres 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| json_2_postgres-0.4.0.tar.gz | 43.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| json_2_postgres-0.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 75.0 kB
Release files / json_2_postgres-0.4.0.tar.gz
| Download URL | json_2_postgres-0.4.0.tar.gz |
|---|---|
| Size | 43.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7148f8df84a9ab89367269bd9cdeaa6597b94da03858aa611506249b11f94e23
|
|
BLAKE2b-256 checksum How to use checksums |
7005b405e58dc0be994d2608f35ef95f7a3f37d23dfec8e0de9255779d92b087
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.13
|
Release files / json_2_postgres-0.4.0-py3-none-any.whl
| Download URL | json_2_postgres-0.4.0-py3-none-any.whl |
|---|---|
| Size | 32.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ecfc65410c3f92bbd2f74e127cca822b34f4f4f2e49782006c0352bc71ac25f6
|
|
BLAKE2b-256 checksum How to use checksums |
9fcd3d4c2b3ea109e89f1d407f8786ceef885947f17e2f6f44e37a8990310057
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.13
|