Как эффективно изменить извлеченные данные из django необработанного запроса - PullRequest
0 голосов
/ 07 января 2020

Для моего проекта мне нужно было выполнить необработанный запрос, чтобы повысить производительность. Проблема здесь в том, что для одной части мне нужно изменить значение извлеченных данных на что-то другое (григорианская дата на джалали), и это приводит к значительному снижению производительности.

cursor.execute("select date,number from my_db)
while True:
    row = cursor.fetchone()
    if row is None:
       break
   data.append(row)

Этот раздел длится около 1 мин. для 4 миллионов данных, но мне нужно изменить дату следующим образом:

cursor.execute("select date,number from my_db)
while True:
    row = cursor.fetchone()
    if row is None:
       break

    row = list(row)
    row[0] = (jdatetime.datetime.fromgregorian(datetime=row[0]).strftime(                                                       '%y/%m/%d, %H:%m'))

   data.append(row)

, это заставит мой код работать за 7 минут. Интересно, есть ли способ сделать это изменение эффективно

1 Ответ

0 голосов
/ 07 января 2020

Первая часть не должна занимать 1 мин до финала sh. Вместо raw sql и al oop сделайте

data = YourModel.objects.values_list('date', 'number') 

Для второй части вы можете создать собственную функцию SQL. https://raresql.com/tag/iranian-calendar-to-georgian-calendar-in-sql-server/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...