holcstore 0.3.0

Creator: rpa-with-ash

Last updated:

Add to Cart

Description:

holcstore 0.3.0

HoLcStore
HoLcStore is a Django app for creating a simple TimeSeries store in your database.
Getting Started

Add "holcstore" to your INSTALLED_APPS setting like this

INSTALLED_APPS = [
...,
"holcstore",
]


Start using the abstract model Store by importing it

from hostore.models import Store

class YourStore(Store):
# add new fields

class Meta(Store.Meta):
abstract = False
# add your meta

Basic Usage : Store class
Saving a timeserie to database
from path.to.YourStore import YourStore
import pandas as pd

key = "3000014324556"
client_id = 0
idx = pd.date_range('2024-01-01 00:00:00+00:00', '2024-01-02 00:00:00+00:00', freq='30min')
ds = pd.Series(data=[1]*len(idx), index=idx)
# Put the load curve to the store without versionning
YourStore.set_lc(key, ds, client_id)
# If you want to activate the versionning
YourStore.set_lc(key, ds, client_id, versionning=True)
# Each time you call set_lc with your id, a new version will be saved in the database

Saving multiple timeseries to database
from path.to.YourStore import YourStore
import pandas as pd

key = "3000014324556"
client_id = 0
idx = pd.date_range('2024-01-01 00:00:00+00:00', '2024-01-02 00:00:00+00:00', freq='30min')
df = pd.Series(data={'key1': [1]*len(idx), 'key2': [2]*len(idx), }, index=idx)
# Put the load curve to the store without versionning
YourStore.set_many_lc(df, client_id)
# If you want to activate the versionning
YourStore.set_many_lc(df, client_id, versionning=True)

Getting a load curve from the database
from path.to.YourStore import YourStore

key = "3000014324556"
client_id = 0
# Get the load curve from the database
# I multiple versions exists, they will be combined beginning with the version 0 and using
# https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.combine_first.html
datas = YourStore.get_lc(key, client_id)

if not datas:
my_timeserie = datas[0]['data']
last_updated = datas[0]['last_modified']

# If you want to retreive all versions
datas = YourStore.get_lc(key, client_id, combined_versions=False)
# datas contains all timeseries linked to key

# If you want to retreive a specific version
datas = YourStore.get_lc(key, client_id, version=1)

Basic Usage : TimeseriesStore class
Define your class in models.py
class MyTimeseriesStore(TimeseriesStore):
year = models.IntegerField()
kind = models.CharField(max_length=100)

class Meta(TimeseriesStore.Meta):
abstract = False
app_label = 'hostore'
unique_together = ('year', 'kind')

Usage samples
# specify attributes to set
ts_attrs = dict(year=2020, kind='a')

# build a timeserie
ds_ts = pd.Series(...)

# set timeserie to db
MyTimeseriesStore.set_ts(ts_attrs, ds_ts)

# update existing timeserie in db (will combine ds_ts + ds_ts_v2, giving priority to ds_ts_v2 datas)
MyTimeseriesStore.set_ts(ts_attrs, ds_ts_v2, update=True)

# get timeserie from db if unique match
ds_ts = MyTimeseriesStore.get_ts(ts_attrs, flat=True)

# get timeseries from db if multiple match
datas = MyTimeseriesStore.get_ts(ts_attrs)
ds_ts1 = datas[0]['data']

(back to top)

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.