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文件保存到数据库时发生此错误(列表索引超出范围)。
答案 0 :(得分:0)
请确保文件中的每一行在分割后产生11个单词
row = row.split('!')
或在将值分配给tmp对象之前添加条件
if len(row)==11:
#assign vlaues here & save
答案 1 :(得分:0)
1)您应该使用注释中提到的正确的csv库
2)您应该注意从CSV加载的数据类型
鉴于我们掌握的信息很少,要回答您的问题,我想您应该使用.split(",")
而不是.split("!")
答案 2 :(得分:0)
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时,其背后的逻辑与在网络上相同,您需要检查的是您要插入的.csv数据的数据类型以及数据库表具有的匹配列。两者必须相同。
另外,最好使用某种库来导入.csv文件。
希望这可以帮助..!