Python 为列截断的Mysql时间戳数据

Python 为列截断的Mysql时间戳数据,python,mysql,timestamp,truncated,Python,Mysql,Timestamp,Truncated,我正试图使用python将时间戳插入到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("""INS

我正试图使用python将时间戳插入到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()
下面是数据库的转储:

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

你应该设置日期时间。插入时,您创建的_at列将自动更新为当前时间戳。请参阅上的文档

你的声明应该是

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

完美的这解决了问题。