2016-04-06 2 views
1

Я изучаю Python, и этот код sqlite3 немного согласован со мной. Может ли Python оптимизировать и запустить инструкцию SQL один раз?Оптимизация выполнения SQL в Python Для цикла

for row in c.execute('SELECT * FROM stocks ORDER BY price'): 
    print row 
+1

Да, он будет работать один раз. Создает ли python новый диапазон для каждой итерации в 'for i в диапазоне (100) ..'? –

+0

Чтобы быть безопасным, почему бы не назначить возврат 'c.Execute (...)' к переменной сначала, а затем перейти в ваш цикл: 'для строки в sharesCollection: print row'. Таким образом, не должно быть никаких сомнений. – gmiley

ответ

1

Как я заметил, он будет работать один раз, соответствующая часть из документации The for statement:

for_stmt ::= "for" target_list "in" expression_list ":" suite 
       ["else" ":" suite] 

Список выражение вычисляется один раз; он должен давать итерируемый объект. Итератор создается для результата expression_list. Затем пакет выполняется один раз для каждого элемента, предоставленного итератором, в порядке возрастания индексов. Каждый элемент в свою очередь присваивается целевому списку, используя стандартные правила для назначений, а затем выполняется пакет. Когда элементы исчерпаны (что происходит сразу, когда последовательность пуста), пакет в предложении else, если он присутствует, выполняется, и цикл завершается.

Акцент мой.

Смежные вопросы