_mysql_exceptions.OperationalError: (1366, "Incorrect integer value: '%s' for column 'ID' at row 1")
_mysql_exceptions.OperationalError: (1366, "Incorrect integer value: '%s' for column 'ID' at row 1")
我正在尝试使用 python 脚本将我的数据从 .csv 插入到 Mysql 数据库。
python 我使用的脚本
import csv
import MySQLdb
db = MySQLdb.connect(host='localhost',user='root',passwd='password',db='EfficientBazzar')
cursor = db.cursor()
csv_data = csv.reader(file('products.csv'))
for row in csv_data:
cursor.execute('INSERT INTO vendor_price_list(ID,Vendor,productname,productcode,unit,weight,price)' 'VALUES("%s","%s","%s","%s","%s","%s","%s")')
db.commit()
cursor.close()
print "Done"
您忘记将行数据插入更新查询。
替换:
'VALUES("%s","%s","%s","%s","%s","%s","%s")'
与:
'VALUES("%s","%s","%s","%s","%s","%s","%s")' % tuple(row)
实际上更好,考虑参数化查询:
cursor.execute('INSERT INTO vendor_price_list(ID,Vendor,productname,productcode,unit,weight,price)' + \
' VALUES(%s,%s,%s,%s,%s,%s,%s)', row)
使用 MySQL 的 LOAD DATA INFILE
直接来自 csv 的批量命令甚至更快(假设服务器实例设置允许):
cursor.execute("LOAD DATA INFILE '/path/to/products.csv'" + \
" INTO TABLE vendor_price_list" + \
" FIELDS TERMINATED BY ',' ENCLOSED BY '\"'" + \
" LINES TERMINATED BY '\n' IGNORE 1 ROWS")
我正在尝试使用 python 脚本将我的数据从 .csv 插入到 Mysql 数据库。
python 我使用的脚本
import csv
import MySQLdb
db = MySQLdb.connect(host='localhost',user='root',passwd='password',db='EfficientBazzar')
cursor = db.cursor()
csv_data = csv.reader(file('products.csv'))
for row in csv_data:
cursor.execute('INSERT INTO vendor_price_list(ID,Vendor,productname,productcode,unit,weight,price)' 'VALUES("%s","%s","%s","%s","%s","%s","%s")')
db.commit()
cursor.close()
print "Done"
您忘记将行数据插入更新查询。
替换:
'VALUES("%s","%s","%s","%s","%s","%s","%s")'
与:
'VALUES("%s","%s","%s","%s","%s","%s","%s")' % tuple(row)
实际上更好,考虑参数化查询:
cursor.execute('INSERT INTO vendor_price_list(ID,Vendor,productname,productcode,unit,weight,price)' + \
' VALUES(%s,%s,%s,%s,%s,%s,%s)', row)
使用 MySQL 的 LOAD DATA INFILE
直接来自 csv 的批量命令甚至更快(假设服务器实例设置允许):
cursor.execute("LOAD DATA INFILE '/path/to/products.csv'" + \
" INTO TABLE vendor_price_list" + \
" FIELDS TERMINATED BY ',' ENCLOSED BY '\"'" + \
" LINES TERMINATED BY '\n' IGNORE 1 ROWS")