【问题标题】:Creating Hypertables through SQL Alchemy通过 SQL Alchemy 创建 Hypertables
【发布时间】:2018-11-24 12:48:34
【问题描述】:

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

create_hypertable

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

【问题讨论】:

    标签: python sqlalchemy timescaledb


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案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');")
      )
      

      【讨论】:

        猜你喜欢
        • 2013-05-01
        • 2021-09-29
        • 1970-01-01
        • 2019-04-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-15
        • 2016-05-29
        相关资源
        最近更新 更多