django读取CSV批量添加数据到数据库

读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':'请检查程序'})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值