Создание гипертаблиц с помощью SQL-алхимии

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

create_hypertable

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


person wfawwer    schedule 14.06.2018    source источник


Ответы (2)


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

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

См. Этот ответ для получения дополнительной информации о триггерах событий: выполнить триггер при создании стол

person RobAtticus    schedule 15.06.2018

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

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');")
)
person eerorika    schedule 09.04.2021