StorageORM (OTUS ΠΏΡΠΎΠ΅ΠΊΡΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ°)
ΠΠ°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ
ΠΠΌΠΏΠΎΡΡ ΠΊΠ»Π°ΡΡΠΎΠ²
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 )
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅/ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°ΠΏΠΈΡΠΈ (ΠΊΠ»ΡΡΠ°ΠΌΠΈ Π·Π°ΠΏΠΈΡΠΈ ΡΠ²Π»ΡΡΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π² 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 ]
)
ΠΡΠ±ΠΎΡΠΊΠ° Π΄Π°Π½Π½ΡΡ
ΠΈΠ· ΠΠ
Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠΊΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² Meta.table
table = "subsystem.{subsystem_id}.tag.{tag_id}"
^ ^
, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ
example_items : list [exampleitem ] = exampleitem .get (subsystem_id = 3 , tag_id = 15 )
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ (ΠΏΡΠΈΠΌΠ΅Ρ )
Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π² ΠΌΠ΅ΡΠΎΠ΄ 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