Je voudrais parcourir un calcul sur une colonne de valeurs dans une base de données MySQL. Je me demandais si Django avait une fonctionnalité intégrée pour le faire. Auparavant, je viens d'utiliser les éléments suivants pour stocker chaque colonne comme une liste de tuples avec le nom table_column:Itérer sur une colonne de base de données dans Django
import MySQLdb
import sys
try:
conn = MySQLdb.connect (host = "localhost",
user = "user",
passwd="passwd",
db="db")
except MySQLdb.Error, e:
print "Error %d: %s" % (e.args[0], e.args[1])
sys.exit (1)
cursor = conn.cursor()
for table in ['foo', 'bar']:
for column in ['foobar1', 'foobar2']:
cursor.execute('select %s from %s' % (column, table))
exec "%s_%s = cursor.fetchall()" % (table, column)
cursor.close()
conn.commit()
conn.close()
Y at-il une fonctionnalité intégrée à Django pour itérer plus facilement à travers les valeurs d'une colonne dans une table de base de données ? J'ai affaire à des millions de lignes, donc la vitesse d'exécution est importante.
[RESOLU] Merci à tous. J'ai utilisé l'itérateur intégré, combiné avec l'appel à values_list() pour l'optimisation des performances. Notez que l'appel de values () retournera des dicts, qui sont lents à parcourir, alors que values_list() retourne des tuples beaucoup plus rapides. Ainsi, par exemple, si je veux itérer sur chaque ligne de la colonne « foobar1 », dans la table « foo », je peux obtenir un itérateur de la manière suivante:
foobar1_iterator = foo.objects.values_list('foobar1').iterator()
Supposons que je veux itérer i pour produire une liste de toutes les valeurs de ligne de 'foobar1'. Puis simplement faire ceci:
foobar1_list = [i for i in foobar1_iterator]