Connection.cursor() 作为游标会创建新连接吗?

Man*_*hew 4 python database django python-3.x

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

for query in query_list:
    with connection.cursor() as cursor:
        cursor.execute(query)
Run Code Online (Sandbox Code Playgroud)

Lea*_*ess 7

with connection.cursor() as cursor:
    cursor.execute(query)
Run Code Online (Sandbox Code Playgroud)

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

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

with connection.cursor() as cursor:
    cursor.execute(query)
Run Code Online (Sandbox Code Playgroud)