Я хотел бы выполнить итерацию по столбцу значений в базе данных MySQL.Интересно, есть ли в Django какие-либо встроенные функции для этого?Ранее я просто использовал следующее для хранения каждого столбца в виде списка кортежей с именем table_column:
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()
Есть ли какая-либо функциональность, встроенная в Django, для более удобной итерации значений столбца втаблица базы данных?Я имею дело с миллионами строк, поэтому скорость выполнения важна.
[решено] Спасибо всем.Я использовал встроенный итератор в сочетании с вызовом values_list () для оптимизации производительности.Обратите внимание, что вызов values () будет возвращать dicts, который медленно повторяется, тогда как values_list () возвращает намного более быстрые кортежи.Так, например, если я хочу выполнить итерацию по каждой строке столбца 'foobar1', в таблице 'foo' я могу получить итератор следующим образом:
foobar1_iterator = foo.objects.values_list('foobar1').iterator()
Предположим, я хочуитерации по i, чтобы получить список всех значений строки 'foobar1'.Тогда просто сделайте это:
foobar1_list = [i for i in foobar1_iterator]