如何在从csv文件中读取时更改列的数据类型

时间:2015-11-09 10:58:26

标签: python mysql opencsv

我需要读取一个csv并对mysql db执行insert操作。 有人告诉我用python编写它但不使用pandas。 但是在将这些传递给db insert iam时会遇到与数据类型有关的错误。 通过从csv读取,我将所有列作为字符串,在我的dbtable中,某些列的数据类型为float和varchar mixe3d。 所以 对于csv_data中的行:

    cursor.execute('INSERT INTO testcsv(names, \
          classes, marks )' \
          'VALUES("%s", "%s", "%s")', 
          row)

类型不匹配正在发生。 所以请帮助我  csv_data = csv.reader(open('D:/satya.csv'))

我可以添加一些条件或某些东西,以便我的第一列将重命名为字符串,其他两个将成为浮点类型。 或者在阅读之后有任何方法可以读取一列并更改其数据类型。然后将其传递给具有相同dtype的db。 所以我可以写

cursor.execute('INSERT INTO testcsv(名称,\               班级,商标)'               'VALUES(“%s”,“%s”,“%s”)' 请帮忙。

1 个答案:

答案 0 :(得分:1)

您的代码几乎没问题,它缺少的是正确的格式。要使用%格式化字符串,您实际上需要使用%运算符:

cursor.execute(
    'INSERT INTO testcsv(names, classes, marks) \
    VALUES("%s", "%s", "%s")' % row
)

假设您的row是3个元素tuple。此外,如果要插入数值而不是字符串,只需在查询字符串中删除双引号"..."