Создание Hypertables с помощью SQL Alchemy

Наш текущий проект в значительной степени опирается на SQL Alchemy для создания таблиц / вставки данных. Мы хотели бы переключиться на гипертаблицы timescaledb, но кажется, что рекомендуемый способ создания гипертаблитов - это выполнение

create_hypertable

команда. Мне нужно иметь возможность динамически создавать таблицы, и поэтому делать это вручную для каждой созданной таблицы на самом деле не вариант. Одним из способов обработки преобразования является запуск сценария python, отправляющего команды psycopg2 для преобразования всех вновь созданных таблиц в гипертабличные таблицы, но это выглядит немного неуклюже. Предлагает ли timescaledb какую-либо интеграцию с SQL Alchemy в отношении создания гипертекстовых таблиц?

2 ответа

Вот практический пример использования триггера события для создания гипертаблицы:

      from sqlalchemy import Column, Integer, DateTime, event, DDL, orm

Base = orm.declarative_base()

class ExampleModel(Base):
    __tablename__ = 'example_model'

    id = Column(Integer, primary_key=True)
    time = Column(DateTime)


event.listen(
    ExampleModel.__table__,
    'after_create',
    DDL(f"SELECT create_hypertable('{ExampleModel.__tablename__}', 'time');")
)

В настоящее время мы не предлагаем каких-либо конкретных интеграций с SQL Alchemy (широко или специально для создания гипертабильных таблиц). Мы всегда заинтересованы в получении запросов о новых функциях, поэтому, если вы захотите опубликовать свой вопрос / вариант использования на нашем Github, это поможет нам лучше отслеживать его для дальнейшей работы.

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

Посмотрите этот ответ для получения дополнительной информации о триггерах событий: выполните триггер, когда я создаю таблицу

Другие вопросы по тегам