Django случайно игнорирует определенные дни, когда я пытаюсь выполнить bulk_create. Как мне решить эту проблему? Как это вообще происходит?

Как Django случайно пропускает дни при попытке bulk_create? Набор данных представляет собой CSV, экспортированный с помощью стороннего инструмента из MSSQL Server.

Экспонат 1 - Данные из моей базы данных:

enter image description here

Обратите внимание, что отсутствует вся цифра 2024-06-13.

Пример 2 - дамп данных из моего фрейма данных:

enter image description here

Когда я смотрю на свой кадр данных pandas, там есть данные за 2024-06-13. Таким образом, чтение CSV и разбор даты работает.

  1. Сначала я подумал, что проблема заключается в использовании слишком большого объема памяти для bulk_create, поэтому попробовал использовать куски. Проблема все равно осталась. Но если бы это была проблема с памятью, то она не устраняла бы этот день так чисто, не затрагивая другие дни вокруг него. Время начала/остановки сеанса соответствует времени открытия и закрытия магазина 12-го и 14-го числа.

  2. Это не единственный день, который случайно исчез. Есть и другие дни до этого, которые также исчезли. Кроме того, последняя возможная дата импорта - 2024-06-24. После этого он больше не импортирует сеансы, существующие в моем датафрейме. Я пробовал и SQLite, и Postgres - безрезультатно, на случай, если это проблема базы данных.

Вот как он импортируется из моего датафрейма через DjangoORM:

sessions = [Session(**row) for row in df.to_dict(orient='records')]
       
objs = Session.objects.bulk_create(
    sessions, batch_size=900,
    # update_conflicts=True,
    # unique_fields=['session_number'],
    # update_fields=['tax_invoice_number']
)

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

Для справки, чтобы показать, что это находится в моем фрейме данных, когда я сбрасываю его в Google Sheets

Есть ли у кого-нибудь идеи, почему некоторые дни просто не записываются в базу данных? Использую Django 5.0.6

Вернуться на верх