Я использую Python 2.7, Peewee и MySQL. Моя программа читает из CSV-файла и обновляет поле, если в CSV-файле существует номер заказа. Может быть 2000-3000 обновлений, и я использую наивный подход, чтобы обновлять записи по одному, что очень медленно. Я перешел от использования обновления Peewee к необработанным запросам, что немного быстрее. Тем не менее, это все еще очень медленно. Мне было интересно, как обновить записи за меньшее количество транзакций без использования цикла.
def mark_as_uploaded_to_zoho(self, which_file):
print "->Started marking the order as uploaded to zoho."
with open(which_file, 'rb') as file:
reader = csv.reader(file, encoding='utf-8')
next(reader, None) ## skipping the header
for r in reader:
order_no = r[0]
query = '''UPDATE sales SET UploadedToZoho=1 WHERE OrderNumber="%s" and UploadedToZoho=0''' %order_no
SalesOrderLine.raw(query).execute()
print "->Marked as uploaded to zoho."