До якої бази даних ви підключаєтесь? Я знаю, що 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 , усуне подібні відмінності та полегшить ваше життя.
%scursor.execute("INSERT INTO table (name, id, datecolumn) VALUES (%s, %s , '%s')",("name", 4,now))