django往数据库中批量添加数据
读csv,并批量插入数据库表🥓🥓
因 读取csv中的数据写入到数据库,故有此🍔
with open('tradingday.csv','r',encoding='utf-8') as f:
reader = csv.reader(f)
csv_list = []
for row in reader:
if tuple([row[0]]) not in cale_list:
csv_list.append(Calendar(tradingday=row[0]))
Calendar.objects.bulk_create(csv_list)🥩🥩🥩
return HttpResponse('导入成功。')
值类型解析
reader:csv读取器,row:[‘2020-01-01’]
list(reader):[[‘2020-01-01’],[‘2020-01-02’],[‘2020-01-03’]]
values_list:(1,),(2,)]
bulk_create:批量插入
读取csv的方式们🍟
1.IO方式
with open('tradingday.csv','r',encoding='utf-8') as f:
reader = csv.reader(f)
csv_list = []
for row in reader:
print(row)
2.pandas中的read_csv
项目中用到的文件上传,读取文件内容写入到数据
简介:前端用户上传文件,写入到数据库的交易日表
体会:文件上传就两步
前端用户上传文件;
后端:
1.读取用户上传文件,写入到服务器的项目目录;
2. 有model,客户要求db中存文件名,例如图片展示;
没model,客户不要求db中存文件名,要去把文件内容写入数据库,例如写入到交易日表。
def CaleAndTimeInput(request):
try:
# 1.文件上传,写入到服务端:
textObj = request.FILES.get('txt_file', None)
filePath = os.path.join(os.path.join(settings.MEDIA_ROOT),textObj.name)
with open(filePath,'wb') as f:
for chunk in textObj.chunks():
f.write(chunk)
# 2.文件上传,读取上传的内容,写入到数据库中,而非传统的根据model字段存入文件名
cale_list = Calendar.objects.values_list()
if os.path.exists(filePath):
with open(filePath, 'r',encoding='utf-8') as f:
reader = csv.reader(f)
csv_list = []
for row in reader:
if tuple([row[0]]) not in cale_list:
csv_list.append(Calendar(tradingday=row[0]))
Calendar.objects.bulk_create(csv_list)
return JsonResponse({'isSuccess':'ok'},safe=False)
else:
return JsonResponse({'isSuccess':'false','info':'tradingday.csv文件路径不存在,导入失败。'},safe=False)
except Exception as e:
print(e)
return JsonResponse({"isSuccess":"error",'info':'请检查程序'})