psycopg2返回字符串而不是十进制数组

时间:2016-10-29 10:14:57

标签: arrays postgresql python-3.x numpy psycopg2

我使用psycopg2和python3查询数据库以获取十进制数组。

在DB内部我使用聚合函数连接数组,如here所示。

从阅读psycopg2文档我的印象是默认情况下PostgreSQL十进制数组应该转换为python十进制列表,但这不会发生。我改为使用单个字符串。

以下是返回值的示例:

{"(\"{1.33,1.37,1.5,1.1,1.576...

我是否需要创建documentation中所述的自定义类型连接器?如果是这样,有人可以指出我正确的方向,因为到目前为止,我无处可去。

欢迎提供其他建议。最终,我希望这些数组在numpy对象中进行操作和绘图。

编辑:

好的,进一步的挖掘让我得出结论,问题是我在DB中的聚合函数。我使用的是与stackoverflow question中显示的相同的一个。

CREATE AGGREGATE array_accum(anyarray) (
    SFUNC = array_cat,
    STYPE = anyarray,
    INITCOND = '{}'
);

然而,从此返回的是字符串。

我正在调用它,就像上面链接的问题一样:

  SELECT array_accum( ARRAY[[x,x]] ) 
   FROM (SELECT subseries FROM series 
    WHERE offset BETWEEN 10 AND 20) x;

如果我查询单个子系列,我会得到正确的类型。聚合后,它将被转换为字符串。

0 个答案:

没有答案