在Django中批量传入数据

文章目录

      • 题目
      • 过程
        • 第一步
        • 第二步
        • 第三步
        • 第四步
      • 后记

题目

如何在Django中批量传入数据

过程

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

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

第一步

你得有一个csv文件,它放在根目录上就行,【根目录就是你拖进你打开这个项目文件夹里】
在Django中批量传入数据_第1张图片

第二步

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

python3 manage.py startapp app项目名

在Django中批量传入数据_第2张图片
例如我创建了一个叫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里的数据【可视化】
在扩展应用里找到,就可以看
在Django中批量传入数据_第3张图片

你可能感兴趣的:(Django,django,python,后端)