我在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,则无法使用我设置的标签名称访问该视图 有人有想法吗?