首页 > 解决方案 > connection.cursor() 作为光标会创建新连接吗?

问题描述

如果在 Django 中执行以下操作,是否会为每个查询执行创建一个新的连接对象?

for query in query_list:
    with connection.cursor() as cursor:
        cursor.execute(query)

标签: pythondjangopython-3.xdatabase

解决方案


with connection.cursor() as cursor:
    cursor.execute(query)

with关键字表示您在 Python 中使用上下文管理器,在此块的末尾connection.__exit__被静默调用并关闭连接。同样在块的开头connection.__enter__执行。

要回答您的问题,是的,您正在为 中的每个查询打开和关闭一个连接query_list。如果你想避免这种置换循环和上下文管理器,如:

with connection.cursor() as cursor:
    for query in query_list:
        cursor.execute(query)

推荐阅读