我想對MySQL數據庫中的一列值進行迭代計算。我想知道Django是否有任何內置的功能來做到這一點。以前,我剛纔用下面的每一列存儲爲元組的名爲table_column列表:在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()
有沒有內置Django的任何功能,通過一列的值在數據庫表更方便迭代?我正在處理數百萬行,因此執行速度非常重要。
[已解決]謝謝大家。我使用內置的迭代器,並結合values_list()調用進行性能優化。請注意,調用values()將返回迭代較慢的字典,而values_list()會返回更快的元組。因此,舉例來說,如果我想列「foobar1」的每一行遍歷,表中的「富」,我可以通過以下方式獲得的迭代器:
foobar1_iterator = foo.objects.values_list('foobar1').iterator()
假設我要遍歷我要生成'foobar1'的所有行值的列表。然後,只需做到這一點:
foobar1_list = [i for i in foobar1_iterator]