for循环内的低效数据库查询

Inefficient database query inside a for loop

我正在编写如下代码。它使用的是 Django,但这可能发生在其他情况下。我也在使用 Postgres 作为 DB 顺便说一句。

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

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

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

其次,你可以试试这个:

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