2016-04-06 7 views
1

Ich lerne Python und dieser SQLite3-Code ist ein bisschen zu mir ausgerichtet. Wird Python die SQL-Anweisung einmal optimieren und ausführen?Optimierung der SQL-Ausführung in Python For Schleife

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

Ja, es wird einmal ausgeführt. Erstellt Python einen neuen Bereich für jede Iteration in 'for i in range (100) .. '? –

+0

Um sicher zu gehen, geben Sie zuerst die Rückgabe von 'c.Execute (...)' an eine Variable und dann in Ihre Schleife: 'für Zeile in stocksCollection: Zeile drucken '. So sollte es keinen Zweifel geben. – gmiley

Antwort

1

Als ich es bemerkte einmal ausgeführt wird, der relevante Teil der docs The for statement:

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

Die Ausdrucksliste einmal ausgewertet wird; es sollte ein iterierbares Objekt ergeben. Ein Iterator wird für das Ergebnis der expression_list erstellt. Die Suite wird dann für jedes vom Iterator bereitgestellte Element in der Reihenfolge aufsteigender Indizes einmal ausgeführt. Jedes Element wird der Zielliste anhand der Standardregeln für Zuweisungen zugewiesen, und dann wird die Suite ausgeführt. Wenn die Elemente erschöpft sind (was sofort der Fall ist, wenn die Sequenz leer ist), wird die Suite in der else-Klausel, falls vorhanden, ausgeführt, und die Schleife wird beendet.

Emphasis meins.