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

2024-09-29 23:22:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个项目,我上传一个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

等等。我在想应该有更有效的方法。。。但我觉得这比每次都达到一分贝要好。你知道吗


Tags: csv方法intrueforobjectslistfile

热门问题