跳转到主要内容

简单的时序数据类型和字段。

项目描述

django-simple-timeseries

使用Django将小型简单时序序列化到数据库。提供用于操作时序的Timeseries类和用于序列化的自定义字段类型TimeseriesField

状态:实验性。

Lint status Test status

示例

在模型上定义TimeseriesField

from django.db import models
from django_simple_timeseries import TimeseriesField

class Appliance(models.Model):
    name = models.CharField(max_length=64)
    temperature = TimeseriesField(
        resolution_seconds=60 * 60,
        max_points=24,
        help_text='Last 24 hours of temperature data',
    )

然后您可以访问其上的Timeseries方法

>>> a = Appliance(name='fridge')
>>> a.temperature.add(23.2)
>>> a.save()
>>> # Wait some time.
>>> a.temperature.add(26.5)
>>> a.save()
>>> print(list(a.iter_points()))
[
    (datetime(2020, 1, 1, 2, 30, 0, tzinfo=<UTC>), 23.2),
    (datetime(2020, 1, 2, 2, 30, 0, tzinfo=<UTC>), 26.5),
]

需求

此软件包支持并针对以下Python的最新补丁版本进行测试

  • Python 3.7, 3.8, 3.9
  • Django 2.2, 3.0, 3.1
  • MariaDB 10.2, 10.3, 10.4, 10.5
  • MySQL 5.7, 8.0
  • Oracle: 12.2+(仅针对12.2.0.1 SE进行测试)
  • PostgreSQL 9.5, 10, 11, 12
  • SQLite 3.9.0+

所有数据库后端都使用它们驱动程序的最新版本进行测试。SQLite还使用GitHub Actions的最新macOS和Windows虚拟环境进行了测试。

安装

pip install django_simple_timeseries

对于Django 3.1及更高版本,不需要额外的依赖项。对于早期版本,此项目需要django_jsonfield_backport

pip install django_jsonfield_backport

工作原理

时序

Timeseries类实现了一个简单的向量样式的时序。时序数据始终是连续的。

内部,所有时序实例都有

  • .start_time,对应于第一个数据点的datetime.datetime
  • .data,记录的数据点(或y值);以及
  • .resolution,一个timedelta,它描述了样本之间的固定间隔。

通过调用add()方法添加样本。add()方法通过以下策略确保连续性:

  • 如果自上次样本以来少于 resolution 秒钟,则替换最新的样本。
  • 如果自上次样本以来超过 resolution 秒钟,则通过适当数量的样本(time_delta % resolution - 1)扩展向量,每个样本将被记录为具有值 None 的间隔。
  • 在所有情况下,将向量修剪为不超过 max_points 个样本。

时间序列字段

TimeseriesFieldJSONField 的形式实现,并扩展它。时间序列的 to_object()from_object() 方法将时间序列实例序列化为普通 Python 对象,该自定义字段类型透明地实现。

使用说明

此模块是实验性的,尚未经过彻底测试。它不适用于大型时间序列。使用风险自负!

项目详情


下载文件

下载适用于您平台文件的文件。如果您不确定要选择哪个,请了解更多关于 安装包 的信息。

源分布

django-simple-timeseries-0.2.0.tar.gz (9.3 kB 查看哈希

上传时间

构建分布

django_simple_timeseries-0.2.0-py3-none-any.whl (8.2 kB 查看哈希

上传时间 Python 3

由以下机构支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页