2013-05-03 3 views
6

У меня есть значения даты и времени, который выполнен с помощью функции strptimeВставка даты и времени в MySql БД

import MySQLdb 
a = time.strptime('my date', "%b %d %Y %H:%M") 

Существует столбец в MySql БД типа DATETIME. Когда я пытаюсь вставить это значение в дБ, я, очевидно, получить ошибку

mysql_exceptions.OperationalError: (1305, 'FUNCTION time.struct_time does not exist') 

INSERT INTO myTable(Date......) VALUES(time.struct_time(tm_year=2222, tm_mon=4, tm_mday=1, tm_hour=1, tm_min=2, tm_sec=4, tm_wday=1, tm_yday=118, tm_isdst=-1), ......) 

Как я могу вставить это значение в БД?

+0

Это должно помочь вам: http://stackoverflow.com/questions/1136437/inserting-a-python-datetime-datetime-object-into -mysql – alecxe

+0

как? это объект datetime.datetime. –

ответ

9

Теперь вы передаете объект time.struct_time, что-то, о чем MySQL ничего не знает. Вам нужно отформатировать временную метку в формате, который понимает MySQL. К сожалению, библиотека MySQLdb не делает это за вас.

Это будет проще всего с помощью datetime модуля, но вы можете сделать это с помощью модуля time тоже:

import datetime 

a = datetime.datetime.strptime('my date', "%b %d %Y %H:%M") 

cursor.execute('INSERT INTO myTable (Date) VALUES(%s)', (a.strftime('%Y-%m-%d %H:%M:%S'),)) 

.strftime() вызов метода на datetime.datetime объекта форматирует информацию таким образом, что MySQL будет принимаем.

Делая ту же задачу, только с time модуля:

import time 

a = time.strptime('my date', "%b %d %Y %H:%M") 

cursor.execute('INSERT INTO myTable (Date) VALUES(%s)', (time.strftime('%Y-%m-%d %H:%M:%S', a),)) 
+0

@ Anthony: Это было ** не ** опечатка; существует вызов 'a.strftime()' в отправляемом образце кода. Я немного расстроен из-за всех рецензентов, которые согласились с предлагаемым редактированием сейчас. –

+0

Я понял это. Сожалею. Я изменил его. – Antimony

+0

Не проблема; Я уже откатил ваше редактирование. :-) –

Смежные вопросы