MySQL或Python中的数据类型转换

0 投票
1 回答
2237 浏览
提问于 2025-04-17 07:19

我有一个.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) 呢?

撰写回答