MySQL或Python中的数据类型转换
我有一个.txt文件,里面有一列是unixtime(时间戳),比如(1322485992.420381000),在小数点前后的数字个数对所有数据来说都是一样的。首先,我想把这一列导入到Mysql表里,我应该怎么定义数据类型呢?
CREATE TABLE videoinfo (id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, unixtime char(50))
之后,在Python中,我需要把这一列转换成日期时间格式,比如:2011-11-28 14:25:23。我用results
来保存从数据库中获取的数据,然后尝试把它转换成日期时间格式。但是这不行,它提示datetime.fromtimestamp requires a float
。可是如果我用unixtime float(10,10)
来创建这一列,txt文件中的数据就无法写入数据库。
results = cur.fetchall()
for result in results:
times = datetime.fromtimestamp(result[0])
cur.execute("ALTER TABLE youtube ADD date DATETIME NOT NULL DEFAULT after unixtime")
for time in times:
cur.execute(u'''insert into `date` values (%s)''', time)
有人能帮忙吗?非常感谢!!!
-编辑-for row in cur.fetchall():
print (row)
times = datetime.fromtimestamp(float(row))
打印的结果是('1322485970.084063000',)
,然后,错误信息是TypeError: float() argument must be a string or a number.
那么我该怎么获取纯字符串值,以去掉('',)
呢?
-编辑-用row[0]代替...问题解决了...
1 个回答
1
看起来像是一个 DOUBLE(11,9)
,不过这么大的数字在32位系统上可能会有问题。如果这是个问题的话,可以考虑用 VARCHAR(21)
。
另外,MySQL可以直接理解 FROM_UNIXTIME(1322485992.420381000)
。
-编辑-
当它说“需要一个浮点数”时,为什么不直接用 float(result)
呢?