2011-11-29 63 views
0

我有一个.txt文件,其中包含一列unixtime,比如(1322485992.420381000),点之前和之后的数字位数对于所有数据都是相同的。首先,我想将这个列导入到Mysql表中,我应该如何定义数据类型?数据类型转换为Mysql或python

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) 

任何人都可以帮忙吗?非常感谢!!!

CNC中 for row in cur.fetchall(): print (row) times = datetime.fromtimestamp(float(row)) 打印结果('1322485970.084063000',)然后,该错误信息是TypeError: float() argument must be a string or a number. 那么,如何可以获取纯粹的字符串值,以摆脱('',)

CNC中 使用行[0]相反...问题解决了...

回答

1

看起来像一个DOUBLE(11,9)虽然这么大的数字可能会导致32位系统上的问题。如果这是个问题,请考虑使用VARCHAR(21)

此外,MySQL只是了解FROM_UNIXTIME(1322485992.420381000)

CNC中

当它说:“需要一个浮动”,你为什么不只是使用float(result)

+0

好的,但我有一列数据需要转换,而不仅仅是一个 – manxing

+0

我用float来定义列,但就像我说的,问题是txt文件中的数据不能写入数据库,但是当它被定义为char时,它可以写成 – manxing

+0

其实我的意思是在Python中使用'float()':'times = datetime.fromtimestamp(float(result [0]))' –