Last updated:
0 purchases
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)
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.