2013-05-03 9 views
6

I mają wartości datetime, który jest produkowany przez strptime funkcjiWkładanie DateTime w MySql db

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

Jest to kolumna MySql dB typu DATETIME. Kiedy próbuję wstawić tę wartość w dB, I, oczywiście, pojawia się błąd z

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), ......) 

Jak mogę wstawić tę wartość w dB?

+0

To powinno pomóc: http://stackoverflow.com/questions/1136437/inserting-a-python-datetime-datetime-object-into -mysql – alecxe

+0

jak? jest obiektem datetime.datetime. –

Odpowiedz

9

Przechodzisz teraz w obiekcie time.struct_time, o czym MySQL nic nie wie. Musisz sformatować znacznik czasu do formatu zrozumiałego dla MySQL. Niestety biblioteka MySQLdb nie robi tego za Ciebie.

To będzie najłatwiej za pomocą modułu datetime, ale można to zrobić za pomocą modułu time też:

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'),)) 

Wezwanie .strftime() metoda na obiekcie datetime.datetime formatuje informacje w taki sposób, że MySQL zaakceptować.

robi to samo zadanie, tylko z modułem 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

@Antimony: To było ** nie ** literówka; w kodzie przykładowym zamieszczono wywołanie 'a.strftime()'. Jestem trochę zdenerwowany wszystkimi recenzentami, którzy zaakceptowali sugerowaną edycję. –

+0

Zrozumiałem to. Przepraszam. Zmieniłem to z powrotem. – Antimony

+0

Nie jest problemem; Wycofałem już twoją edycję. :-) –