从Excel导入数据到Mysql Python

这个代码适用于String,但是浮点数列在数据库中是不一样的,我不明白它是如何工作的。例如在Excel文件中,数据库“254.0835”中的值为“215,325”,并且有许多其他的值被改变。

import MySQLdb import xlrd list= xlrd.open_workbook("prod.xls") sheet= list.sheet_by_index(0) database = MySQLdb.connect (host="localhost" , user="root" , passwd="" ,db="table") cursor = database.cursor() query= """INSERT INTO produits (idProduit, idCategorie, LibelleProduit, PrixProduit) VALUES (%s, %s, %s, %s)""" for r in range(1,sheet.nrows): idProduit = sheet.cell(r,0).value categorie = 999 libelle=sheet.cell(r,1).value prix=sheet.cell(r,3).value #>>>>> HERE THE PROBLEM the Imported Value <<<< values = (idProduit,categorie,libelle,prix) cursor.execute(query,values) cursor.close(); database.commit() database.close() print"" print "All done !" columns= str(sheet.ncols) rows=str(sheet.nrows) print "i just import "+columns+" columns and " +rows+ " rows to MySQL DB" 

另外,我试图改变SQLtypes为Varchar它也被改变。

从Excel中读取数据时发生此问题。 如果你知道它的float数据,那么你可以在将它插入到MySQL之前清理它。

 import re prix=sheet.cell(r,3).value prix = str(prix) prix = re.sub('[^0-9.]+', '', prix ) print float(prix) 

这种方式只有数字和。 将保留所有其他垃圾将被丢弃。

 import MySQLdb import re database = MySQLdb.connect (host="localhost" , user="test" , passwd="" ,db="test") cursor = database.cursor() query= """INSERT INTO test (id, num) VALUES (%s, %s)""" prix = "215,325" prix = str(prix) prix = re.sub('[^0-9.]+', '', prix ) prix = float(prix) values = (23,prix) cursor.execute(query,values) cursor.close(); database.commit() database.close() print "Done"