2013-10-07 182 views
0

我正在嘗試使用python將時間戳插入到mysql db的列created_by中。Mysql時間戳列數據被截斷

這裏是我的數據庫表設置..

CREATE TABLE temps (
temp1 FLOAT, temp2 FLOAT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP 
); 

temp1中和TEMP2和正確填充,但收到一個錯誤的時間戳

Warning: Data truncated for column 'created_at' at row 1 
    cursor.execute("""INSERT INTO temps VALUES (%s,%s,%s)""",(avgtemperatures[0],avgtemperatures[1],st[2])) 
((71.7116, 73.2494, None),) 

下面是Python腳本的是插入信息的部分分貝。

#connect to db 
db = MySQLdb.connect("localhost","user","password","temps") 

#setup cursor 
cursor = db.cursor() 
ts = time.time() 
st = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S') 

sql = """CREATE TABLE IF NOT EXISTS temps (
    temp1 FLOAT, 
    temp2 FLOAT, 
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)""" 
cursor.execute(sql) 


#insert to table 
try: 
    cursor.execute("""INSERT INTO temps VALUES (%s,%s,%s)""",(avgtemperatures[0],avgtemperatures[1],st[2])) 
    db.commit() 
except:  
    db.rollback() 


#show table 
cursor.execute("""SELECT * FROM temps;""") 

print cursor.fetchall() 
((188L, 90L),) 

db.close() 

這裏是DB的轉儲:

Dumping data for table temps 
temp1 temp2 created_at 
71.7116 73.2494 0000-00-00 00:00:00 

回答

2

你應該設置日期時間。您的created_at列將自動更新爲插入時的當前時間戳。請參閱文檔Automatic Initialization and Updating for TIMESTAMP

你的說法應該是

cursor.execute("""INSERT INTO temps VALUES (%s,%s,CURRENT_TIMESTAMP)""",(avgtemperatures[0],avgtemperatures[1])) 
+0

完美!這解決了這個問題。 – user2782497