我正在开发一个上传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
等等。我认为必须有一种更有效的方法来做到这一点......但我认为这比实际上每次点击数据库更好。