首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TimescaleDB:从Python调用'create_hypertable‘可以吗?

TimescaleDB:从Python调用'create_hypertable‘可以吗?
EN

Stack Overflow用户
提问于 2018-03-04 23:45:23
回答 4查看 16.4K关注 0票数 18

我想动态地在Postgres中创建TimescaleDB表,因为我处理的数据源会随着时间的推移而改变(财务提要可能是100,可能是1000),而且我希望每个数据源都有一个表。

我可以从Python中创建没有问题的表,但是当我调用SELECT create_hypertable(test_table1, time)时它会抛出一个错误。当然,从pSQL执行相同的查询似乎很好,所以看起来时间刻度API可能无法通过psycopg2获得?

环境:

  • Python 3.6.4
  • 内核2-二进制-2.7.4(安装标志:
  • 邮政: 10.3
  • 时间b: 0.8.0-2
  • MacOS: 10.13.3

测试代码:

代码语言:javascript
复制
db.query("CREATE TABLE test_table1 (time TIMESTAMP NOT NULL, name CHAR(100) NOT NULL")
db.query("SELECT create_hypertable('test_table1', 'time')")

错误:

2018-03-05 11:45:36,901 MainThread函数create_hypertable(未知,未知)不存在 第1行:选择create_hypertable('temp_table1','time') 。。。。。。。。。。。。。。^ 提示:没有任何函数与给定的名称和参数类型匹配。您可能需要添加显式类型转换。

有没有人知道,目前是否有这方面的工作?我错过了一些简单的东西吗?或者,是否有其他服务可以取代支持动态创建的时间刻度功能?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-03-05 13:47:56

这个输出意味着您还没有在运行TimescaleDB的数据库上安装create_hypertable扩展。确保你跑:

代码语言:javascript
复制
CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;

在运行create_hypertable之前在您的数据库上运行。要确保已经创建了扩展,请运行以下查询:

代码语言:javascript
复制
select * from pg_extension;

psycopg不应该对此产生任何影响,因为.query()调用似乎只是在执行传递它的原始SQL。确保您的psycopg客户端连接到与您最初安装TimescaleDB扩展的数据库相同的数据库。

票数 37
EN

Stack Overflow用户

发布于 2021-04-14 00:10:25

我在Postgres: 12上也有同样的问题,通过添加参数if_not_exists,它在Postgres: 13中得到了解决

代码语言:javascript
复制
SELECT create_hypertable('table_name', 'time', if_not_exists => TRUE);
票数 2
EN

Stack Overflow用户

发布于 2018-03-05 17:22:31

您可以尝试转换您的输入,它看起来可能是输入方式的问题,类似于treated.So,类似于SELECT create_hypertable('test_table1'::regclass, 'time'::name);可能会更好地工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49101709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档