У меня есть столбец даты в таблице MySQL. Я хочу вставитьdatetime.datetime()
объект в этот столбец. Что мне следует использовать в операторе выполнения?
Я пытался:
now = datetime.datetime(2009,5,5)
cursor.execute("INSERT INTO table
(name, id, datecolumn) VALUES (%s, %s
, %s)",("name", 4,now))
Я получаю сообщение об ошибке: "TypeError: not all arguments converted during string formatting"
Что мне использовать вместо %s
?
%s
cursor.execute("INSERT INTO table (name, id, datecolumn) VALUES (%s, %s , '%s')",("name", 4,now))
Ответы:
Для поля времени используйте:
Я думаю, что strftime также относится к datetime.
источник
time
в этом примере?Скорее всего, вы получаете ошибку TypeError, потому что вам нужны кавычки вокруг значения столбца даты.
Пытаться:
Что касается формата, я успешно выполнил указанную выше команду (которая включает миллисекунды) и:
Надеюсь это поможет.
источник
%s
вpymsql
.Попробуйте использовать,
now.date()
чтобы получитьDate
объект, а неDateTime
.Если это не сработает, тогда преобразование в строку должно работать:
источник
Используйте метод Python
datetime.strftime(format)
, где format ='%Y-%m-%d %H:%M:%S'
.Часовые пояса
Если часовые пояса вызывают беспокойство, часовой пояс MySQL можно установить для UTC следующим образом:
А часовой пояс можно установить в Python:
Документация MySQL
источник
К какой базе данных вы подключаетесь? Я знаю, что Oracle может быть разборчивой в форматах даты и любит формат ISO 8601 .
** Примечание. Ой, я только что прочитал, что вы используете MySQL. Просто отформатируйте дату и попробуйте ее как отдельный прямой вызов SQL для проверки.
В Python вы можете получить дату ISO, например
Например, Oracle любит такие даты, как
В зависимости от вашей базы данных, если это Oracle, вам может потребоваться TO_DATE:
Общее использование TO_DATE:
Если вы используете другую базу данных (я увидел курсор и подумал о Oracle; я мог ошибаться), проверьте их инструменты формата даты. Для MySQL это DATE_FORMAT (), а для SQL Server - CONVERT.
Также использование такого инструмента, как SQLAlchemy , устранит подобные различия и упростит вашу жизнь.
источник
Если вы просто используете python datetime.date (а не полный datetime.datetime), просто укажите дату в виде строки. Это очень просто и работает для меня (mysql, python 2.7, Ubuntu). Столбец
published_date
- это поле даты MySQL, переменная pythonpublish_date
-datetime.date
.источник
при переходе в t-sql
это не удается:
это работает:
Простой способ:
источник