Python CSV文件导入Django(仅导入1行数据)
我试图将CSV文件内容上传到数据库,但观察到只有第一行数据得到更新,而且如果存在具有相同值的数据,那么它将被忽略。 我们也可以使用逻辑打开,这样一旦任务完成,它就会自动关闭。 我的观点Python CSV文件导入Django(仅导入1行数据),python,django,django-views,export-to-csv,Python,Django,Django Views,Export To Csv,我试图将CSV文件内容上传到数据库,但观察到只有第一行数据得到更新,而且如果存在具有相同值的数据,那么它将被忽略。 我们也可以使用逻辑打开,这样一旦任务完成,它就会自动关闭。 我的观点 import csv, io from django.shortcuts import render from django.contrib import messages # Create your views here. # one parameter named request def contact_up
import csv, io
from django.shortcuts import render
from django.contrib import messages
# Create your views here.
# one parameter named request
def contact_upload(request):
# declaring template
template = "testapp/upload.html"
data = Movie.objects.all()
# prompt is a context variable that can have different values depending on their context
prompt = {
'order': 'Order of the CSV should be releasedate, moviename, hero, heroine, rating',
'profiles': data
}
# GET request returns the value of the data with the specified key.
if request.method == "GET":
return render(request, template, prompt)
csv_file = request.FILES['file']
# let's check if it is a csv file
if not csv_file.name.endswith('.csv'):
messages.error(request, 'THIS IS NOT A CSV FILE')
data_set = csv_file.read().decode('UTF-8')
print(data_set)
io_string = io.StringIO(data_set)
next(io_string)
# setup a stream which is when we loop through each line we are able to handle a data in a stream
for column in csv.reader(io_string, delimiter=',', quotechar="|"):
_, created = Movie.objects.update_or_create(
releasedate=column[0],
moviename=column[1],
hero=column[2],
heroine=column[3],
rating=column[4]
)
context = {}
return render(request, template, context)
models.py
从django.db导入模型
在这里创建您的模型。
我很少会得到异常值:“utf-8”编解码器无法解码位置15中的字节0xe4:无效的继续字节如何使用try块处理它
[30/Sep/2020 12:59:36] "GET /admin/jsi18n/ HTTP/1.1" 200 3223
releasedate,moviename,hero,heroine,rating
2020-09-30,bndcxnv,Abcd,fdghfkd,67
2020-09-76,Abcd,abc,abc,1
2020-09-10,Xyz,Pp,Ff,77
2020-09-30,Huff,Fgf,Fgt,779
[30/Sep/2020 12:59:47] "POST /uploadcsv HTTP/1.1" 200 470
[30/Sep/2020 12:59:50] "GET /admin/testapp/movie/ HTTP/1.1" 200 7245
[30/Sep/2020 12:59:50] "GET /admin/jsi18n/ HTTP/1.1" 200 3223
[30/Sep/2020 12:59:36] "GET /admin/jsi18n/ HTTP/1.1" 200 3223
releasedate,moviename,hero,heroine,rating
2020-09-30,bndcxnv,Abcd,fdghfkd,67
2020-09-76,Abcd,abc,abc,1
2020-09-10,Xyz,Pp,Ff,77
2020-09-30,Huff,Fgf,Fgt,779
[30/Sep/2020 12:59:47] "POST /uploadcsv HTTP/1.1" 200 470
[30/Sep/2020 12:59:50] "GET /admin/testapp/movie/ HTTP/1.1" 200 7245
[30/Sep/2020 12:59:50] "GET /admin/jsi18n/ HTTP/1.1" 200 3223