python - connection.cursor() 作为光标会创建新连接吗?
问题描述
如果在 Django 中执行以下操作,是否会为每个查询执行创建一个新的连接对象?
for query in query_list:
with connection.cursor() as cursor:
cursor.execute(query)
解决方案
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)