2013-05-03 111 views
6

我具有由strptime函數插入日期時間到MySQL分貝

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

有一個在型DATETIME的MySQL數據庫列製成的日期時間值。當我嘗試將這個值到數據庫,我,很明顯,得到的

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 2013-05-03 12:58:59

+0

怎麼樣?它是一個datetime.datetime對象。 – 2013-05-03 13:01:06

回答

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

datetime.datetime對象上的.strftime()方法調用格式化信息,以這樣的方式,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

@Antimony:這是**不是**錯字;在發佈的示例代碼中有一個'a.strftime()'調用。我現在對所有接受建議編輯的評論者都感到有點不安。 – 2014-04-18 18:35:34

+0

我意識到這一點。抱歉。我改回來了。 – Antimony 2014-04-18 18:37:36

+0

不是問題;我已經回滾了你的編輯。 :-) – 2014-04-18 18:38:09