Django优化查询更新

时间:2014-06-04 08:29:57

标签: django django-queryset

我有一个打开txt文件(350k行)的函数,读取每一行并更新数据库中的字段。该数据库有大约250k-300k的记录。

它对我来说太慢了。

您可以帮我优化查询或导入方式吗?

查询:

PlaceGroupMatch.objects.filter(**query_kwargs).update(sym_ul=int(line[5]), updated=True, updated_date=datetime.now())

整个代码:

def street_postal_codes():
    output_file_name = os.path.join(settings.MEDIA_ROOT, "postal", "ulice_GUS.txt")
    with open(output_file_name, 'r+') as handle:
        next(handle)
        lines = csv.reader(handle, delimiter='\t')

    lines = list(lines)

    def update_data(lines):
        transaction.set_autocommit(False)
        for index, line in enumerate(lines):
            query_kwargs = {
                "sym_ext": int(line[10]),
                "sym_pod":int(line[4]),
                "updated": False
            }

            qs = PlaceGroupMatch.objects.filter(**query_kwargs).update(sym_ul=int(line[5]), updated=True, updated_date=datetime.now())
            print index
            if index % 5000 == 0:
                print index, datetime.now()
        transaction.commit()
        transaction.set_autocommit(True)

    update_data(lines)

0 个答案:

没有答案