如果要在Django中执行以下操作,将为每次查询执行创建一个新的连接对象。
for query in query_list:
with connection.cursor() as cursor:
cursor.execute(query)
答案 0 :(得分:2)
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)