有效地循环遍历CSV文件并在Django / Python中对非常大的数据库表进行验证

时间:2017-11-22 13:22:10

标签: python django csv

我正在开发一个上传CSV文件的项目,然后循环遍历每一行,并枚举行中的每个值。如果该字段有一个条目,我需要根据一个大的值表来验证它。

我现在如何处理这个问题是我从我需要的每个表中执行单个查询,即主键。因此,我将提取300k主键并验证该列表。这比每次使用单个.get请求命中数据库要快得多。

我的问题是 - 这可以更有效地完成吗?

我的代码示例:

large1_list = list(large1.objects.values_list('pk', flat=True))
large2_list = list(large2.objects.values_list('pk', flat=True))

csv_file = request.FILES['csv_file']
csv_parsed = csv.reader(codecs.iterdecode(csv_file, 'utf-8'), delimiter=',')

for fields in csv:
    for i, x in enumerate(fields):
        if i == 0:
            if x not in large1_list:
                   return blah blah blah

等等。我认为必须有一种更有效的方法来做到这一点......但我认为这比实际上每次点击数据库更好。

0 个答案:

没有答案