Pull to refresh

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

Level of difficultyEasy
Reading time3 min
Views3.5K

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

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

В процессе работы над новой статьей из цикла по 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.

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

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

Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
Total votes 7: ↑2 and ↓5+1
Comments32

Articles