Django случайно игнорирует определенные дни, когда я пытаюсь выполнить bulk_create. Как мне решить эту проблему? Как это вообще происходит?
Как Django случайно пропускает дни при попытке bulk_create
? Набор данных представляет собой CSV, экспортированный с помощью стороннего инструмента из MSSQL Server.
Экспонат 1 - Данные из моей базы данных:
Обратите внимание, что отсутствует вся цифра 2024-06-13.
Пример 2 - дамп данных из моего фрейма данных:
Когда я смотрю на свой кадр данных pandas, там есть данные за 2024-06-13. Таким образом, чтение CSV и разбор даты работает.
Сначала я подумал, что проблема заключается в использовании слишком большого объема памяти для
bulk_create
, поэтому попробовал использовать куски. Проблема все равно осталась. Но если бы это была проблема с памятью, то она не устраняла бы этот день так чисто, не затрагивая другие дни вокруг него. Время начала/остановки сеанса соответствует времени открытия и закрытия магазина 12-го и 14-го числа.Это не единственный день, который случайно исчез. Есть и другие дни до этого, которые также исчезли. Кроме того, последняя возможная дата импорта - 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