我使用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;
如果我查询单个子系列,我会得到正确的类型。聚合后,它将被转换为字符串。