我在一个看起来像这样的表中有数据:
src_id, dst_id, params
int , int , array
我正在使用以下 Django 查询查询数据以从数组中提取一些值
dataset = query_set.values_list('src_id', 'dst_id', *[e.field for e in settings])
我需要像这样输出数据:
[
[1,2,[a,b,c,d]],
[3,4,[a,c,d,e]],
...
]
但values_list
返回一个元组列表,如
(1,2,a,b,c,d)(3,4,a,c,d,e)...
所以我一直在做以下事情来将元组值重新组合成一个数组:
[[d[0], d[1], d[2:]] for d in dataset]
它工作正常,但我有 1M+ 行,而且速度很慢。它也使用了大量的内存。理想情况下,我想在 SQL 中正确格式化数据(通过 Django)并将输出直接推送到 JSON 序列化程序,而无需生成中间数组。
有没有办法优化这段代码?
我研究过使用循环或 lambda,但这并没有太大的区别。我看着使用array
,但它只需要原始类型,所以数组数组没有太多运气。
我正在寻找一种方法来查询数据库并以正确的格式直接输出数据,如果可能的话在 Django 中:
我看到 Django 可以像这样进行切片数组查找
dataset = query_set.values_list('src_id', 'dst_id', 'data__3_10')
例如,要获取索引 3 和 10 之间的值,但我需要检索特定索引(例如 1、4、5、6、8、11),而不是切片。
关于如何格式化这样的查询输出的任何提示?有可能,还是对 Django 来说太深奥了?我需要raw
SQL 吗?
谢谢