Django数据库的增删改查

∥☆過路亽.° 提交于 2019-12-05 23:52:01

目录

一、搭建sqlite数据库

1、修改setting设置

2、数据库同步

3、使用sqlite数据库

二、Django 数据库操作

(1)增

方法一:利用类实例化

方法二:调用objects的create方法

(2)查

(3)删

(4)改


我们以sqlite3数据库为例

一、搭建sqlite数据库

1、修改setting设置

在django项目下的项目名下的settings中,修改DATABASES字典

如果之前设置过mysql,则把mysql的DATABASES注释掉

2、数据库同步

(1)启动虚拟环境

在django项目下,打开命令提示符,然后输入activate djangopath,就启动了环境

(2)django校验

python manage.py check

检验数据库配置,语法有没有错误,这里显示是没有错误

(3)数据库语句生成

python manage.py makemigrations

这一步是生成数据库,一般用于没有创建数据库的时候使用,因为之前我们已经创建了mysql数据库,而且没有修改内容,所以下面显示的是没有改动

(4)数据库同步

python manage.py migrate

这一步是同步数据库,我们也没有需要同步的数据

3、使用sqlite数据库

把刚刚生成的数据库文件直接拖动到右侧的database栏,就可以了

如果拖不动的话,则需要采用下面的方法,

根据标的号,创建一个sqlite数据库

 

选择import from sources

默认是选择的db.sqlite3

 

 

二、Django 数据库操作

(1)增

方法一:利用类实例化

如下图所示,我们打开views.py文件,然后实例化数据库artical里的models文件里设置好的Type类

然后给这个实例赋值,最后save保存。

之后我们去打开urls.py文件,并把addType增加进urlpatterns列表里

接下来我们开启服务器,输入地址,查看效果

可以看到,确实是返回了success,说明addType被调用了。

接下来我们去数据库里查看一下

我们可以看到,,数据库里已经有了刚刚增加的数据

方法二:调用objects的create方法

同样,我们打开views.py文件,然后对它进行操作

因为之前已经同步了urls.py文件,所以这里不需要再同步一次,我们再打开一次网页

显示是已经成功了的,然后我们也去数据库里查看一下

可以看到数据确实是进入了数据库

(2)查

查询数据返回的是query_set对象或者单个数据,我们同样在views.py里进行增加

这个命令返回locals数据并添加到response当中,然后传递到前端

然后在urls.py文件里同步一下

然后写前端

因为返回的不是单个数据,所以我们遍历一下取出

然后我们打开网页,进行查看,效果如下

以下是查询的一些操作

def showType(request):
    # types = Type.objects.all() #查询所有的数据
    # types=Type.objects.filter(label="文章")
    # types = Type.objects.get(id = 2) #只返回一个数据,不可迭代
    # types=Type.objects.order_by("id") #排序
    # types=Type.objects.order_by("-id") #倒序排序
    # types=Type.objects.filter(label="散文").order_by("-id") #查询散文,并且倒序排序
    # types=Type.objects.filter()[:3] #限制条数
    # types=Article.objects.get(id=1).author.name
    # types = Article.objects.get(id = 1).author.name #查询id为1的文章的作者的名字
    # articles = Author.objects.get(name = "毛泽东").article_set.all() #查询作者的名字是毛泽东的所有的书
    # 多对多关系
    # 文章 和 类型
    # 一篇文章的所有类型
    # articles = Article.objects.get(id = 1).type.all() #查询id为1的文章的所有类型
    # 一个类型的所有文章
    # articles = Type.objects.get(id = 3).article_set.all() #查询id为3的类型的所有小说

    return render_to_response("showType.html", locals())

还有更复杂的一些操作,就需要使用原生的数据库命令了

types = Type.objects.raw("select * from Article_type") # 查询id为3的类型的所有小说

(3)删

同样,我们views.py文件里添加删除的命令

然后同步到urls.py文件里

再然后就是检验成果的时候了,我们打开网页

可以看到返回了success,说明已经删除了,我们再去数据库里看一下

可以看到,确实已经把id=5的数据删除掉了

(4)改

同样,我们在views.py文件里添加修改数据的命令,需要注意的是,修改操作最后需要save保存一下

然后同步一下urls.py文件

接下来,打开网页

然后查看数据库,可以看到,数据确实是已经被修改了

还有另外一种方法,就是直接对对象进行update操作,但是比较危险!!如果不指定范围的话,是修改全部的数据!!

可以看到,因为没有添加适用的范围,所以默认修改了所有的description

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!