Я написал кусок очень неэффективного, но работающего кода, который работает ок. 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)
Пожалуйста, помогите улучшить. Спасибо