匹配python中的mysql数据类型以获取加载数据

时间:2012-12-04 14:46:54

标签: python mysql

我有一个python脚本将数据加载到我遇到的mysql表问题中:

Warning: Incorrect integer value: 'user_id' for column 'user_id' at row 1
  +'VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)',row)
Warning: Invalid TIMESTAMP value in column 'edit_time' at row 1
  +'VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)',row)

这只是许多警告线中的一行,我理解错误并根据我的理解我猜这行仍然是字符串格式或转换没有正确发生。在我从tsv文件中读取它们之后,我正在考虑将每个元素强制转换为行。

example: int(row[0])

但我不确定如何正确转换以匹配相关时间戳元素的MySQL时间戳类型。

#load training data
def readtsv(file_name, con):
    cur = con.cursor()
    with open('file.tsv', 'rb') as f:
        for row in csv.reader(f, delimiter='\t'):
            cur.execute('INSERT INTO mytable(user_id, article_id, revision_id, namespace, edit_time, md5, reverted, reverted_user_id, reverted_revision_id, delta, cur_size)'
                        +'VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)',row)
    try:
        con.commit()
    except Exception, e:
        print 'unable to commit'
        print e

1 个答案:

答案 0 :(得分:0)

您是否检查过您的时间戳值是否正确?

http://dev.mysql.com/doc/refman/5.1/en/datetime.html

如果是这样,MySQL将不会看到错误,因此不存在警告!

作为提示只需打印insert语句字符串并尝试通过“PhpMyAdmin”或其他数据库界面工具启动它。

MySQL的TIMESTAMP值格式为:'YYYYMMDDHHMMSS',因此今天2012年12月4日21:06:00将以这种方式编写:'20121204210600',带引号!