Django数据库的增删改查
目录
我们以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数据库
根据标的号,创建一个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