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文件
希望这能有所帮助。。!