我想动态地在Postgres中创建TimescaleDB表,因为我处理的数据源会随着时间的推移而改变(财务提要可能是100,可能是1000),而且我希望每个数据源都有一个表。
我可以从Python中创建没有问题的表,但是当我调用SELECT create_hypertable(test_table1, time)时它会抛出一个错误。当然,从pSQL执行相同的查询似乎很好,所以看起来时间刻度API可能无法通过psycopg2获得?
环境:
测试代码:
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') 。。。。。。。。。。。。。。^ 提示:没有任何函数与给定的名称和参数类型匹配。您可能需要添加显式类型转换。
有没有人知道,目前是否有这方面的工作?我错过了一些简单的东西吗?或者,是否有其他服务可以取代支持动态创建的时间刻度功能?
发布于 2018-03-05 13:47:56
这个输出意味着您还没有在运行TimescaleDB的数据库上安装create_hypertable扩展。确保你跑:
CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;在运行create_hypertable之前在您的数据库上运行。要确保已经创建了扩展,请运行以下查询:
select * from pg_extension;psycopg不应该对此产生任何影响,因为.query()调用似乎只是在执行传递它的原始SQL。确保您的psycopg客户端连接到与您最初安装TimescaleDB扩展的数据库相同的数据库。
发布于 2021-04-14 00:10:25
我在Postgres: 12上也有同样的问题,通过添加参数if_not_exists,它在Postgres: 13中得到了解决
SELECT create_hypertable('table_name', 'time', if_not_exists => TRUE);发布于 2018-03-05 17:22:31
您可以尝试转换您的输入,它看起来可能是输入方式的问题,类似于treated.So,类似于SELECT create_hypertable('test_table1'::regclass, 'time'::name);可能会更好地工作。
https://stackoverflow.com/questions/49101709
复制相似问题