通过SQL Alchemy创建Hypertables

时间:2018-06-14 17:03:49

标签: timescaledb

我们当前的项目在很大程度上依赖于SQL Alchemy来创建表/数据。我们想切换到timescaledb的超文本,但似乎推荐的创建超文本的方法是执行

create_hypertable

命令。我需要能够动态创建表,因此为每个创建的表手动执行此操作并不是一个真正的选择。处理转换的一种方法是运行python脚本发送psycopg2命令将所有新创建的表转换为超文本,但这看起来有点笨拙。 timescaledb是否提供与SQL Alchemy在创建超文本方面的任何集成?

2 个答案:

答案 0 :(得分:1)

我们目前不提供与SQL Alchemy的任何特定集成(广泛或专门用于创建超文本)。我们总是对听到新的功能请求感兴趣,所以如果您想在我们的Github上发布您的问题/用例,这将有助于我们更好地跟踪它以备将来工作。

可能对您的用例有用的一件事是创建一个在表创建时执行的事件触发器。您必须检查它是否在正确的模式中,因为TimescaleDB会动态创建自己的块表,并且您不希望将它们转换为超文本。

有关事件触发器的更多信息,请参阅此答案: execute a trigger when I create a table

答案 1 :(得分:0)

以下是使用事件触发器创建超级表的实际示例:

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');")
)