将.csv保存到数据库时发生错误:-' 列表索引超出范围 '


def import_db(request):
f=open('product.csv','r')
for row in f:
row =  row.split('!')
tmp = AdminProduct.objects.create()
tmp.id = row[0]
tmp.productname = row[1]
tmp.barcode = row[2]
tmp.company = row[3]
tmp.size = row[4]
tmp.price = row[5]
tmp.description = row[6]
tmp.category = row[7]
tmp.subcategory = row[8]
tmp.product_tag = row[9]
tmp.image = row[10]
tmp.save()
f.close()   

将.csv文件保存到数据库时发生此错误(列表索引超出范围(。

请确保文件中的每一行都在拆分后得到11个单词row = row.split('!')或者在为tmp对象赋值之前添加一个条件

if len(row)==11:
#assign vlaues here & save

1(您应该使用注释中提到的正确的csv库

2( 您应该小心从CSV 加载的数据类型

鉴于我们掌握的信息很少,为了回答您的问题,我认为您应该使用.split(",")而不是.split("!")

import csv #will get csv from python
def import_db(request):
with open('product.csv','r') as csv_file:
csv_reader = csv.reader(csv_file)
row1=True   #will skip your first row and mismatching of variable type
for row in csv_reader:
if row1:
row1 = False
continue
tmp = AdminProduct.objects.create(
id          = row[0],
productname = row[1],
barcode     = row[2],
company     = row[3],
size        = row[4],
price       = row[5],
description = row[6],
category    = row[7],
subcategory = row[8],
product_tag = row[9],
image       = row[10],
)
return redirect('/somewhere/')   

当您上传.csv时,它背后的逻辑与在web上保持不变,您需要检查的是要插入的.csv数据的数据类型以及数据库表中匹配的列。它们必须是相同的
此外,最好使用某种库来导入.csv文件
希望这能有所帮助。。!

最新更新