8

我们当前的项目严重依赖 SQL Alchemy 来创建表/插入数据。我们想切换到 timescaledb 的超表,但似乎推荐的创建超表的方法是执行

create_hypertable

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

4

2 回答 2

7

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

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

有关事件触发器的更多信息,请参阅此答案: 创建表时执行触发器

于 2018-06-15T16:21:42.247 回答
1

下面是一个使用事件触发器创建超表的实际示例:

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');")
)
于 2021-04-09T22:20:02.237 回答