美文网首页
Django中对数据库的操作

Django中对数据库的操作

作者: kris_lp | 来源:发表于2018-05-05 08:47 被阅读0次

一、筛选数据

1.filter()

filter是一个迭代器,用于筛选满足某些条件的记录,多个条件之间用逗号隔开。
filter相当于一个容器,把满足条件的记录都装在这个容器中,所以必须用 for in 读取数据。若不存在满足条件的记录,容器返回空。

a.匹配多个条件

查询Student表中80后的学生

stus = Students.objects.filter(s_birth__gte='1980-01-01', s_birth__lte='1989-12-31')
b.获取指定的多条记录

获取指定多个id的值

ids = [1, 2, 5]
stus = Students.objects.filter(id__in=ids)
2.get()

get获取满足记录的一条记录,即使满足条件的有多条记录,也只会返回一条,所以读取数据的时候不能用 for in结构;若不存在满足条件的记录,程序会报错。
查询学生李白的信息

stus = Students.objects.filter(s_name='李白')
3.all()

all用于查询表中的所有内容,返回的内容也是装在容器中,
查询Student表中所有学生

stus = Students.objects.all()
4.first()

获取满足条件的第一个记录

stu = Student.objects.all().first()
5.last()

获取满足条件的最后一个记录

stu = Student.objects.all().last()
6.[ ]

[]切片,如[0]表示取满足条件的第一条记录。
[start, end] 从start开始取值,取到end - 1

stu = Student.objects.all()[0]
7.F()

F用于获取当前对象某属性的值,适用于比较一个对象的多个属性。
查找语文成绩大于数学成绩10的学生

stus = Student.objects.filter(s_yuwen__gt=F('s_shuxue')+10)
8.& | Q ~

&并且,相当于and;|或,相当于or。
& | 都要搭配Q使用,~表示非,如~Q(s_sex='1'),表示匹配sex不是1的学生。
查询语文成绩大于90分的男生

stus = Student.objects.filter(Q(s_yuwen__gt=90) & Q(s_sex='1'))
9.order by()

order by排序,默认排升序,若要按照降序排列,在属性前加-符号
按照语文成绩的高低排列学生,要求从高到低排列

stus = Student.objects.all().order by('-s_yuwen')
10.count()

count对筛选的内容进行计数
获取男生的数据个数

stus = Students.objects.filter(stu_sex=True).count()
11.exists()

exists是否存在,判断某属性值是否存在,返回布尔值。
判断是否存在姓名为李白的学生

stus = Students.objects.filter(stu_name='李白').exists()
12.模糊匹配
a.contains

contains包括,只要属性值包含某字段即符合条件
查询名字中包含王的学生

stus = Student.objects.filter(s_name__contains='王')
b.startswith

startswith以某字符开始,匹配属性值以某字符串开始的记录
查询姓李的学生

stus = Student.objects.filter(s_name__startswith='李')
c.endswith

endswith以某字符结尾,匹配属性值以某字符串结尾的记录
查询名字最后一个字是天的学生

stus = Student.objects.filter(s_name__endswith='天')
13.update()

update更新,对筛选出的记录中的属性值进行修改
修改id=1的学生的姓名为派大星

Student.objects.filter(id='1').update(stu_name='派大星')
14.delete()

delete删除,删除筛选出的所有记录
删除20岁的学生

Student.objects.filter(stu_age='20').delete()

二、表关系

可以在数据库图表中的表之间创建关系,以显示一个表中的列与另一个表中的列是如何相链接的。表关系包含以下三种:

1、一对一

在一对一关系中,A 表中的一行最多只能匹配于 B 表中的一行,反之亦然。如果相关列都是主键或都具有唯一约束,则可以创建一对一关系。

a)OneToOne

2、一对多

一对多关系是最普通的一种关系。在这种关系中,A 表中的一行可以匹配 B 表中的多行,但是 B 表中的一行只能匹配 A 表中的一行。例如,publisherstitles 表之间具有一对多关系:每个出版社出版很多书,但是每本书名只能出自一个出版社。

b)foreignkey

3、多对多

在多对多关系中,A 表中的一行可以匹配 B 表中的多行,反之亦然。要创建这种关系,需要定义第三个表,称为结合表,它的主键由 A 表和 B 表的外部键组成。例如,authorstitles 表具有多对多关系,这是由于这些表都与 titleauthors表具有一对多关系。titleauthors 表的主键是 au_id 列(authors 表的主键)和 title_id 列(titles 表的主键)的组合。

c)MoreToMore

相关文章

  • Django数据存储到数据库(建表)

    Django中要将数据库存储到数据库中,步骤如下环境:python3+Django2.0 操作过程 1.在sett...

  • Django模型类的属性与关系

    在django中, 所有的数据库操作都是面向对象编程,基本上看不到操作数据库的sql语句,方便快捷是django开...

  • Django事务操作

    在Django中实现数据库的事务操作 在学习MySQL数据库时,MySQL数据库是支持原子操作的. 什么是数据库的...

  • Django连接MySQL数据库

    1.1.Django项目连接mysql数据库 Django项目要操作数据库,首先要和数据库建立连接,才能让程序中的...

  • 03-Django模型

    一、模型 Django对各种数据库提供了很好的支持,Django为这些数据库提供了统一的调用API(即不管底层操作...

  • Django模型

    一、模型 Django对各种数据库提供了很好的支持,Django为这些数据库提供了统一的调用API(即不管底层操作...

  • 03-Django模型

    一、模型 Django对各种数据库提供了很好的支持,Django为这些数据库提供了统一的调用API(即不管底层操作...

  • 03-Django模型

    一、模型 Django对各种数据库提供了很好的支持,Django为这些数据库提供了统一的调用API(即不管底层操作...

  • 03-Django模型

    一、模型 Django对各种数据库提供了很好的支持,Django为这些数据库提供了统一的调用API(即不管底层操作...

  • 如何查看Django ORM执行的SQL语句

    Django ORM对数据库操作的封装相当完善,日常大部分数据库操作都可以通过ORM实现。但django将查询过程...

网友评论

      本文标题:Django中对数据库的操作

      本文链接:https://www.haomeiwen.com/subject/pzjelftx.html