Новая библиотека для работы с JSON: json_db_lite

от автора

Приветствую, друзья!

Сегодня у меня для вас незапланированная публикация.

В процессе работы над новой статьей из цикла по FastAPI, я создавал примеры взаимодействия с базой данных через JSON, включая операции по извлечению, добавлению, изменению данных и другие.

В результате накопилось большое количество кода, который оказался избыточным, особенно с учётом того, что скоро я планирую перейти к описанию более серьёзного взаимодействия FastAPI с полноценной базой данных (SQLAlchemy с миграциями через Alembic). Поэтому я решил вынести весь код взаимодействия с JSON в отдельную библиотеку.

Так появилась json_db_lite.

Эта библиотека будет полезна в контексте FastAPI как отправная точка для знакомства с взаимодействием FastAPI и баз данных. В других проектах функционал json_db_lite также может оказаться весьма полезным.

Примеры Использования

Допустим, вам нужно парсить большой объем товаров с интернет-магазина (например, 5000 товаров). Категорий может быть много, и каждая категория имеет свои уникальные характеристики. На начальном этапе вы не знаете, какие характеристики собирать, а задача стоит в том, чтобы собрать всю возможную информацию по товарам.

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

Если вы знакомы с NoSQL базами данных, такими как MongoDB, возможно, этот пример не будет для вас интересен. Однако я старался сделать библиотеку полезной для каждого, чтобы каждый нашел в ней что-то для себя.

Зачем Нужен JSON

Прежде чем мы приступим к установке библиотеки и разбору её синтаксиса, давайте разберемся, что такое JSON и зачем он нужен.

JSON (JavaScript Object Notation) — это стандартный текстовый формат для хранения и передачи структурированных данных. Он основан на синтаксисе объекта в JavaScript, но не привязан к этому языку.

Проще говоря, JSON — это основная структура данных, которая используется для общения между приложениями (клиентом и сервером). Благодаря удобной структуре «ключ — значение», JSON используется во всех языках программирования, хотя может называться по-разному. В Python, например, это словари (dict).

Возможности Библиотеки

json_db_lite позволяет:

  • Создавать JSON файл при инициализации класса (можно расценивать как создание базы данных).

  • Добавлять новые записи.

  • Получать все записи.

  • Очищать базу данных.

  • Удалять записи по ключу.

  • Обновлять записи по ключу.

Установка

Библиотека опубликована на PyPi, поэтому вы можете установить её с помощью следующей команды:

pip install --upgrade json_db_lite

Импорт и инициализация

from json_db_lite import JSONDatabase   # Инициализация базы данных db_client = JSONDatabase('db.json')

После инициализации класса будет создан пустой JSON файл. Вы можете указать название файла или передать путь к папке, чтобы файл был создан там. Этот файл и будет являться вашей простой базой данных.

Примеры использования

Добавление данных

def add_data_to_db():     # массовое добавление     db_client.add_records([{"id": 1, "name": "Sara"},                            {"id": 2, "name": "Mark"},                            {"id": 3, "name": "Charlie"},                            {"id": 4, "name": "David"}                            ])     # добавление одной записи     db_client.add_records({"id": 5, "name": "Alex"}) 

Метод принимает словарь или список словарей, добавляя записи в JSON.

Извлечение всех данных

def get_all_data():     # возвращаем все данные     return db_client.get_all_records()

Извлечение данных по конкретному ключу

def get_data(key='id', value=4):     # возвращаем данные по ключу     return db_client.find_records_by_key(key, value)

Функция возвращает список словарей, даже если возвращается одно значение.

Обновление данных

def update_data():     # обновляем данные по ключу у одного словаря     db_client.update_record_by_key(upd_filter={"id": 4}, new_data=[{"name": "Alex"}, {"age": 31}])      # обновляем данные по ключу у одного словаря     db_client.update_record_by_key(upd_filter={"name": "Alex"},                                    new_data=[{"age": 40}, {"job": "python developer"}])

Метод универсален. В качестве upd_filter передается словарь формата «ключ-значение» для фильтрации. В new_data можно передать список словарей или отдельный словарь. При отсутствии связки «ключ-значение», но при совпадении с фильтром, метод добавит новую связку. Если связка присутствует, то выполнит обновление.

Удаление записей

def dell_data():     # удаляем данные по ключу     db_client.delete_record_by_key(key="name", value="Alex")

После выполнения этого кода будут удалены все словари, у которых name = Alex.

Очистка Базы Данных

def dell_all_data():     db_client.clear_database()

Заключение

Несмотря на свою простоту, библиотека получилась достаточно гибкой и универсальной. О новостях и обновлениях библиотеки я буду сообщать в своём телеграм-канале «Легкий путь в Python».

Репозиторий проекта на GitHub: JsonDatabase.

Надеюсь, что данная информация была вам полезной. Если это так, поддержите меня лайком, подпиской или комментарием. Ваше внимание и поддержка помогут мне продолжать выпускать полезные и универсальные библиотеки.

Благодарю за внимание!


ссылка на оригинал статьи https://habr.com/ru/articles/826434/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *