Python for using in-memory storage with ORM
Project description
StorageORM (CyberPhysics)
Установка
pip install storage-orm
Зависимости
Базовый пример использования (все примеры, базовый пример)
- Импорт классов
from storage_orm import StorageORM from storage_orm import RedisORM from storage_orm import RedisItem from storage_orm import OperationResult
- Определить модель
class ExampleItem(RedisItem): """ Атрибуты объекта с указанием типа данных (в процессе сбора данных из БД приводится тип) """ date_time: int any_value: float class Meta: """ Системный префикс записи в Redis Ключи указанные в префиксе обязательны для передачи в момент создания экземпляра """ table = "subsystem.{subsystem_id}.tag.{tag_id}"
- Установить подключение ORM можно двумя способами
- Передать данные для подключения непосредственно в ORM
orm: StorageORM = RedisORM(host="localhost", port=8379, db=1)
- Создать подключение redis.Redis и передать его в конструктор
redis: redis.Redis = redis.Redis(host="localhost", port=8379, db=1) orm: StorageORM = RedisORM(db=redis)
- Передать данные для подключения непосредственно в ORM
- Добавление/редактирование записи (ключами записи являются параметры, указанные в Meta.table модели)
- Создать объект на основе модели
example_item: ExampleItem = ExampleItem( subsystem_id=3, tag_id=15, date_time=100, any_value=17. )
- Выполнить вставку можно несколькими способами
- Использовать метод save() созданного экземпляра
operation_result: OperationResult = example_item.save()
- Использовать метод save() StorageOrm
operation_result: OperationResult = orm.save(item=example_item)
- Использовать групповую вставку записей (пример групповой вставки)
operation_result: OperationResult = orm.bulk_create( items=[example_item1, example_item2] )
- Использовать метод save() созданного экземпляра
- Создать объект на основе модели
- Выборка данных из БД
- для выборки необходимо передать аргументы для параметров, которые используются в Meta.table
table = "subsystem.{subsystem_id}.tag.{tag_id}" ^ ^
, напримерexample_items: list[exampleitem] = exampleitem.get(subsystem_id=3, tag_id=15)
- для выборки необходимо передать аргументы для параметров, которые используются в Meta.table
- Использование нескольких подключений (пример)
- для использования нескольких подключений необходимо в метод StorageItem.using(db_instance=...) передать
подготовленное соединение с БД Redis, например
redis_another: redis.Redis = redis.Redis(host="localhost", port=8379, db=17) ... result_of_operation: OperationResult = example_item.using(db_instance=redis_another).save()
- для использования нескольких подключений необходимо в метод StorageItem.using(db_instance=...) передать
подготовленное соединение с БД Redis, например
Запуск примеров
python -m venv venv
source ./venv/bin/activate
pip install redis
# Базовый простой пример
PYTHONPATH="${PYTHONPATH}:." python examples/redis_1_single.py
# Пример групповой вставки (bulk)
PYTHONPATH="${PYTHONPATH}:." python examples/redis_2_bulk_multiple.py
# Пример использования нескольких подключений
PYTHONPATH="${PYTHONPATH}:." python examples/redis_3_using_multiple_connections.py
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
storage_orm-1.1.6.tar.gz
(9.3 kB
view hashes)
Built Distribution
Close
Hashes for storage_orm-1.1.6-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 456a670fd1cacfde6d292d69bf17139b7d19528c64348c48f6a55770bdb48a28 |
|
MD5 | 5bcfcd06886eded90af6cc5b7f1f2362 |
|
BLAKE2b-256 | 30c346ffb01a0111f01e3f7f01eec2f79ea3acc75976be3559e3f8787d9d4f32 |