К какой базе данных вы подключаетесь? Я знаю, что Oracle может быть разборчива в форматах даты и любит формат ISO 8601 .
** Примечание: Ой, я только что прочитал, что вы на MySQL. Просто отформатируйте дату и попробуйте использовать ее как отдельный прямой вызов SQL для проверки.
В Python вы можете получить дату ISO, например
now.isoformat()
Например, Oracle любит даты вроде
insert into x values(99, '31-may-09');
В зависимости от вашей базы данных, если это Oracle, вам может понадобиться TO_DATE:
insert into x
values(99, to_date('2009/05/31:12:00:00AM', 'yyyy/mm/dd:hh:mi:ssam'));
Общее использование TO_DATE:
TO_DATE(<string>, '<format>')
Если вы используете другую базу данных (я увидел курсор и подумал, что Oracle; я могу ошибаться), тогда проверьте их инструменты форматирования даты. Для MySQL это DATE_FORMAT (), а для SQL Server это CONVERT.
Также использование такого инструмента, как SQLAlchemy , устранит подобные различия и облегчит вашу жизнь.