游标的connection.cursor()是否会创建新的连接?

时间:2019-05-08 10:06:17

标签: python django python-3.x database

如果要在Django中执行以下操作,将为每次查询执行创建一个新的连接对象。

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

1 个答案:

答案 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)