【问题标题】:How to get the array consisting of arrays containing the fields from the table row in Django QuerySet API?如何从 Django QuerySet API 中的表行中获取由包含字段的数组组成的数组?
【发布时间】:2013-05-19 19:53:23
【问题描述】:

如何在 Django QuerySet API 中获取由包含表行中的字段的数组组成的数组?

数据库表示例:

标识 | col1 | col2 | col3

1 | 12 | 123 | 11

2 | 2 | 23 | 2

3 ....

...

预期结果:

arr = [ [12,123,11], [2,23,2], ... ]

找到解决方案

id = Entry.objects.values_list('id', flat=True).order_by('id')

[1, 2, 3, ...]

col1 = Entry.objects.values_list('col1', flat=True).order_by('id')

[12,123,11]

col2 = Entry.objects.values_list('col2', flat=True).order_by('id')

[ 2 , 23, 2]

arr = zip(col1, col2)

【问题讨论】:

    标签: django django-models django-queryset


    【解决方案1】:

    你为什么不这样做

    Entry.objects.values_list()
    

    这正是它的作用。

    【讨论】:

    • values_list 返回元组。值在括号内 [(1), (2), (3)] 它必须是 json 可序列化的,并且它们有很多,所以我试图让它尽可能快。感谢回复
    • 没有。 values_list 返回一个元组列表:[(12, 123, 11), (2, 23, 2), ...]。这可以通过调用json.dumps(list(entries)) 直接序列化为 json。这肯定至少比您的方法快 1 倍,后者进行 三个独立的数据库调用。进行单独的数据库调用肯定会慢得多。不要这样做。
    【解决方案2】:

    总结

    如果你想将表中的每一行序列化成json

    示例:

    arr = [ [col1, col2, col3], [col1, col2, col3], [col1, col2, col3] ]

    使用

    Entry.objects.values_list()

    json.dumps(list(entries))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      • 2011-05-04
      • 1970-01-01
      • 1970-01-01
      • 2020-08-24
      相关资源
      最近更新 更多