Как работать с гипертаблицами 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()