我有一些SQL查询,它们可以返回元组数组,其中元组可以再次是(理论上)无限数量的嵌套级别,并且事先结构未知的数组。
返回类型示例:
select (1, 'abc', array[123, 456], array['123', '456'],
array[(7, array[1,2,3]), (8, array[7,8,9])])
唯一已知的是,在数组中,所有元组元素的长度都相同,并且每个位置的元组元素的类型都相同。
psycopg2驱动程序返回诸如字符串之类的对象。它似乎也有something可以处理像我这样的情况,但是我不知道如何在或多或少的复杂情况下使用它。
P.S。有一个beautiful library可以开箱即用地处理此类数据类型,但目前看来已经废弃了。但是,从它不需要任何“转换器”就可以工作的事实出发,我得出结论,对组合类型的描述是在协议级别从服务器传输到客户端的。为什么像psycopg2或asyncpg之类的库需要转换器才能在没有它们的情况下完成操作?