PostgreSQL函数在sqlalchemy中使用返回复合类型

时间:2017-01-28 16:52:46

标签: python sql postgresql sqlalchemy sql-function

我在sqlalchemy中遇到了复合类型的postgres问题 函数my_function()返回一个由两个float和一个文本类型组成的复合类型 我将函数添加到sqlalchemy:

class my_function(GenericFunction):  
    pass

所以现在我可以使用以下函数:

sqlalchemy.func.my_function()

但是,在查询中,我无法访问复合类型的单个部分:

db.select([
    MyTable.a,
    sqlalchemy.func.my_function()
)].select_from(MyTable)

这将创建以下输出:

--a--|--my_function_1--
'a'  |(1.0, 2.4, 'aText')

返回类型定义如下:

CREATE TYPE my_type AS (x FLOAT, y FLOAT, z TEXT);

使用:

sqlalchemy.func.my_function().x

导致错误:

AttributeError: Neither 'my_function' object nor 'Comparator' object has an attribute 'x'

任何想法如何获得这样的输出:

--a--|--x--|--y--|--z--
'a'  |1.0  |2.4  |'aText'

我无法使用db.literal_column(),因为我将此查询转移到稍后我必须访问的视图中。如果我使用literal_column,则无法使用我设置的标签名称访问该视图 有人有想法吗?

0 个答案:

没有答案