【问题标题】:Inefficient database query inside a for loopfor 循环内的低效数据库查询
【发布时间】:2015-08-26 02:49:24
【问题描述】:

我正在编写如下代码。它正在使用 Django,但这可能发生在其他情况下。我也在使用 Postgres 作为 DB btw。

for elem in elemList:
    return_obj = someModle.objects.get(something=elem)
    if return_obj is not None:
        return_list.append(return_obj)
return return_list

这里每次都会生成并执行一个新的数据库查询。由于循环可能很大,因此可能会执行大量数据库。我想知道是否有更好的方法来完成这项工作。

【问题讨论】:

    标签: python django database postgresql query-optimization


    【解决方案1】:

    首先:如果something=elem条件不匹配任何对象,你不会得到NonesomeModel会引发DoesNotExist异常。

    其次,你可以试试这个:

    return_list = someModel.objects.filter(something__in=elemList)
    return return_list
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-29
      • 1970-01-01
      • 1970-01-01
      • 2020-10-10
      • 2020-06-25
      • 2021-02-08
      相关资源
      最近更新 更多