我需要读取一个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”)' 请帮忙。
答案 0 :(得分:1)
您的代码几乎没问题,它缺少的是正确的格式。要使用%
格式化字符串,您实际上需要使用%
运算符:
cursor.execute(
'INSERT INTO testcsv(names, classes, marks) \
VALUES("%s", "%s", "%s")' % row
)
假设您的row
是3个元素tuple
。此外,如果要插入数值而不是字符串,只需在查询字符串中删除双引号"..."
。