gpt4 book ai didi

flask - 将 hypertable 转换为常规 postgres 表

转载 作者:行者123 更新时间:2023-12-01 23:35:12 26 4
gpt4 key购买 nike

对 timescaledb 来说相当陌生,我正在努力处理迁移脚本。我正在尝试使用 SQLAlchemy 为 Flask 应用程序创建迁移。

假设我创建了一个表(如 timescaledb 文档中所示),如下所示:

CREATE TABLE conditions (
time TIMESTAMPTZ NOT NULL,
location TEXT NOT NULL,
temperature DOUBLE PRECISION NULL,
humidity DOUBLE PRECISION NULL
);

要添加超表,我的升级迁移脚本应该执行以下操作:

SELECT create_hypertable('conditions', 'time');

降级部分应该是什么样子?来自 timescaledb docs ,他们建议:

DROP table conditions;

但我不希望删除整个表,只删除“超表”部分(如果有意义的话)。也许这是愚蠢且毫无意义的,我想通过我们的迁移提供一种摆脱 timescaledb 的方法。我已经读过这个问题:Creating Hypertables through SQL Alchemy其中似乎没有为 SQLAlchemy 提供特定支持,并且他们建议使用触发器来创建超表而不是特定迁移。

你有什么建议?

最佳答案

正如迈克所说, super 表是一种完全不同的存储机制,这意味着您不能简单地将其关闭。相反,就像将包含数据的表转换为 super 表时一样,您需要将表从 super 表中迁移出来。

-- if you already have data in a table, you need to migrate that data
SELECT create_hypertable('conditions', 'time', migrate_data => true);

您可以使用此处的任何答案来复制数据 https://stackoverflow.com/a/31284533/897414但这是我在迁移降级过程中要做的事情。

CREATE TABLE pg_conditions (LIKE conditions INCLUDING ALL); -- duplicate table structure
INSERT INTO pg_conditions (SELECT * FROM conditions); -- copy all data
DROP TABLE conditions; -- drops hypertable
ALTER TABLE pg_conditions RENAME TO conditions; -- conditions is now a regular postgres table again

关于flask - 将 hypertable 转换为常规 postgres 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57910070/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com