Django. SQLite. Как улучшить скорость запросов / код и скорость сортировки в списке - PullRequest
0 голосов
/ 27 апреля 2020

Я написал кусок очень неэффективного, но работающего кода, который работает ок. 24 часа до завершения задания.

У меня есть список choices = ["qwert", ... "ABCDE", ...], длина списка составляет 2 ... 1000. Я делаю изменения в таблице SQLite следующим образом:

первый неверный код:

def update_records_in_bigtable(uid_br_next, choices):

    for k in choices:
        q = BigTable.objects.all().filter(Q(field1__exact=k) | 
            Q(field1__exact=k) | Q(field3__exact=k) & Q(field3=0)
            ).update(uid_nr=uid_nr_next)

второй неверный код:

def add_records_to_crossreftable(choices, obj):
    for k in choices:
        try:
        x = CrossRefTable.objects.create(field1=k, uid_nr_foreign=obj)
        except:
            x = DuplicatesTable.objects.create(field1=k)

третий неверный код:

def get_next_list(k):
    choices=list(BigTable.objects.all().filter(Q(field1__exact=k) | Q(field2__exact=k)
                ).values_list('field1', 'field2', 'field3',
                )
                )

    choice=[]
    for ch in choices:
        ch=set(ch)   # remove same members

        if "" in ch:
            ch.remove("") # remove empty members

        if "ABC" in ch:
            ch.remove("ABC") # remove special member

        choice=choice + list(ch)

    choice=set(choice)
    return list(choice)

Пожалуйста, помогите улучшить. Спасибо

...