在Django中批量传入数据

题目

如何在Django中批量传入数据

过程

本来学习数据库的使用是不难的,难的是利用Django上传数据,搜索了太多网上教程,准确来说没有一个有用,看的我都火冒三丈,不得不说一些网友太过于省事,全部都是转载别人的文章,以至于百度搜出来的一连串的几篇文章都是一毛一样的,真是令人难受!!!

下面我来讲一下自己的心得体会,以及如何将自己csv文件上传到数据库中

第一步

你得有一个csv文件,它放在根目录上就行,【根目录就是你拖进你打开这个项目文件夹里】
在这里插入图片描述

第二步

在django中创建一个app
在命令行输入

python3 manage.py startapp app项目名

在这里插入图片描述
例如我创建了一个叫database的app项目

第三步

创建一个表,我的叫做lawdatabase
在这里插入图片描述
里面有两列,question和reply,此时数据库为空

第四步

在database中找到views.py
zai
写入以下代码

def loadToDatabase(request):
	# 找到csv路径
    path = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))),'database.csv')
    # 使用pandas读取数据
    data = pandas.read_csv(path,index_col=False)
    # 存放临时数据list,相当于缓存
    l = []
    flag = True
    # 万一读取失败,给自己一个机会,重新删除所有数据,从头开始
    # LawAnswer.objects.all().delete()
    if flag:
        for i in range(len(data)):
            d = LawAnswer(question=data.iloc[i]['question'],reply=data.iloc[i]['reply'])
            l.append(d)
            if i%5000==0:
                print('数据正在上传中...')
        flag = False
        # 一并读取到数据库中,batch_size不要太大,否则会出现too many terms in compound SELECT
        LawAnswer.objects.bulk_create(l,batch_size=100)
    return render(request,'index.html',{"status":"数据已经上传完毕"})
   

然后我们借用访问index页面时进行上传,记得要导入相关库吖

def index_view(request):
    if request.method == "GET":
        resp = loadToDatabase(request)
        return resp

之后在终端执行

python3 manage.py runserver

在网页中打开

localhost:8000/index

此时会转一会圈圈~
之后到vscode中查看数据库,发现数据库已经上传成功!

在这里插入图片描述
在这里插入图片描述
和csv一样,csv中第一行是标题

后记

哦,对了,如果想要在vscode中看到db.sqlite里的数据【可视化】
在扩展应用里找到,就可以看
在这里插入图片描述

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

365JHWZGo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值