Skip to main content

Python for using in-memory storage with ORM

Project description

StorageORM (CyberPhysics)

Установка
    pip install storage-orm
Зависимости
Базовый пример использования (все примеры, базовый пример)
  1. Импорт классов
        from storage_orm import StorageORM
        from storage_orm import RedisORM
        from storage_orm import RedisItem
        from storage_orm import OperationResult
    
  2. Определить модель
        class ExampleItem(RedisItem):
            """
                Атрибуты объекта с указанием типа данных
                  (в процессе сбора данных из БД приводится тип)
            """
            date_time: int
            any_value: float
    
            class Meta:
                """
                    Системный префикс записи в Redis
                    Ключи указанные в префиксе обязательны для
                      передачи в момент создания экземпляра
                """
                table = "subsystem.{subsystem_id}.tag.{tag_id}"
    
  3. Установить подключение ORM можно двумя способами
    1. Передать данные для подключения непосредственно в ORM
          orm: StorageORM = RedisORM(host="localhost", port=8379, db=1)
      
    2. Создать подключение redis.Redis и передать его в конструктор
          redis: redis.Redis = redis.Redis(host="localhost", port=8379, db=1)
          orm: StorageORM = RedisORM(db=redis)
      
  4. Добавление/редактирование записи (ключами записи являются параметры, указанные в Meta.table модели)
    1. Создать объект на основе модели
          example_item: ExampleItem = ExampleItem(
              subsystem_id=3,
              tag_id=15,
              date_time=100,
              any_value=17.
          )
      
    2. Выполнить вставку можно несколькими способами
      1. Использовать метод save() созданного экземпляра
            operation_result: OperationResult = example_item.save()
        
      2. Использовать метод save() StorageOrm
            operation_result: OperationResult = orm.save(item=example_item)
        
      3. Использовать групповую вставку записей (пример групповой вставки)
            operation_result: OperationResult = orm.bulk_create(
                items=[example_item1, example_item2]
            )
        
  5. Выборка данных из БД
    • для выборки необходимо передать аргументы для параметров, которые используются в Meta.table
          table = "subsystem.{subsystem_id}.tag.{tag_id}"
                                   ^               ^
      
      , например
          example_items: list[exampleitem] = exampleitem.get(subsystem_id=3, tag_id=15)
      
  6. Использование нескольких подключений (пример)
    • для использования нескольких подключений необходимо в метод 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()
      
Запуск примеров
    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


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.2.tar.gz (8.6 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page