Будет ли connection.cursor () в качестве курсора создавать новое соединение? - PullRequest
0 голосов
/ 08 мая 2019

Если я делаю следующее в Django, будет ли создаваться новый объект соединения для каждого выполнения запроса.

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

1 Ответ

2 голосов
/ 08 мая 2019
Ключевое слово
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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...