Как работать с гипертаблицами Django и TimescaleDB?

Во-первых, гипертаблица требует, чтобы все PK содержали столбец раздела, в данном случае time, а с другой стороны, Django не позволяет создавать многостолбцовые PK, поэтому вы не можете создать PK, который мог бы содержать столбец time.

Второе: если у меня есть строки с повторяющимся временем, это нарушит уникальные ограничения в столбце времени.

Как использовать Django и TimescaleDB вместе и использовать гипертаблицы?

Я пытался создать таблицу с временем в качестве первичного ключа и в итоге получил ошибку дублирования ключа при вставке данных в таблицу

Существует библиотека Django для Timescale

https://github.com/jamessewell/django-timescaledb

В нем есть менеджер моделей с некоторыми базовыми функциями, он позаботится об установке расширения и создании гипертаблиц.

Я не вникал в код, но это работает, если удалить pk из таблиц модели.

Вы можете установить его с помощью

pip install django-timescaledb

Добавьте его в файл settings.py:

DATABASES = {
    'default': {
        'ENGINE': 'timescale.db.backends.postgresql',
        ...
    },
}

Создайте свою модель следующим образом:

from timescale.db.models.fields import TimescaleDateTimeField
from timescale.db.models.managers import TimescaleManager

class Metric(models.Model):
  time = TimescaleDateTimeField(interval="1 day")

  objects = models.Manager()
  timescale = TimescaleManager()
Вернуться на верх