python - Mysql时间戳数据因列被截断

标签 python mysql timestamp truncated

我正在尝试使用 python 将时间戳插入到 mysql 数据库的 create_by 列中。

这是我的数据库表设置..

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

最佳答案

您应该设置日期时间。您的created_at列将自动更新为插入时的当前时间戳。请参阅文档 Automatic Initialization and Updating for TIMESTAMP .

你的陈述应该是

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

关于python - Mysql时间戳数据因列被截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19232025/

相关文章:

python - urwid - 无限循环的输出屏幕

python - 什么 python 代码为二元运算符生成所有可能的分组(树)

Python try...except 逗号 vs 'as' in except

php - mySQL查询在选择计数时添加条件

php - 整数和字符串之间的内连接

python - 不可变容器内的可变类型

mysql - 选择具有单个别名的多个列

r - 从 R 中单独的 DAY OF YEAR、Year 和 Time 列创建单个时间戳

php - 时间戳(具有不同的时区格式)在未来吗?

ios - 将时间戳转换为 NSDate