我想在Postgres中动态创建TimescaleDB表,因为我正在处理随时间变化的数据源(金融提要,可能是100,可能是1000),我希望每个数据源有一个表.

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

环境:

  • Python 3.6.4
  • psycopg2-binary-2.7.4(安装时带有标志:--无二进制:全部:)
  • 博士后:10.3
  • Timescaledb:0.8.0-2
  • 马科斯:10.13.3

测试代码:

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 ] [ERROR] function create_hypertable(unknown, unknown) does not exist
LINE 1: SELECT create_hypertable('temp_table1', 'time')
. . . . . . . . . . . . . . ^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.

有人知道目前是否还有其他方法来实现这一点吗?我错过了一些简单的事情吗?或者是否有其他服务可以替代支持动态创建的时间刻度功能?

推荐答案

该输出意味着您尚未在运行create_hypertable的数据库上安装TimescaleDB扩展.确保你跑:

CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;

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

select * from pg_extension;

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

Python-3.x相关问答推荐

根据样本量随机 Select 组内样本

需要使用regex匹配字符串的帮助,直到最后一次出现开闭括号,开闭括号中的值是可选的

如何获得给定列表中所有可能的元素组合?

Python:字典和列表:在列表字典中搜索子列表的有效方法

当我在正则表达式末尾使用斜杠时,为什么会得到不同的结果?

将水平堆叠的数据排列成垂直

来自嵌套字典的完整地址

Python 3 - 给定未知数量的类别动态地将字典嵌套到列表中

过滤并获取数据框中条件之间的行

Python ** 用于负数

使用大型多个数据集,其中每个数据集包含多个值 - Pytorch

Python socket.error: [Errno 13] 权限被拒绝

python 3集合中的Discard()和Remove()函数有什么区别

Python:如何判断一个项目是否被添加到一个集合中,没有 2x(hash,lookup)

ValueError:预期的 2D 数组,得到 1D 数组:

迭代dict值

如何制作函数Collection

是否可以在每个路由的基础上限制 Flask POST 数据大小?

如何为 anaconda python3 安装 gi 模块?

为什么某些代码在 Python2 中是确定性的,而在 Python 3 中是非确定性的?