Django——2.ORM对象关系映射之对数据库的增删改查操作

模型的操作

先在终端中输入:python .\manage.py shell

进入了虚拟环境后,在输入:from Item_2.models import Card

导入模型后,可对数据库中创建的表进行增删改查等操作。

输入:card=Card(name='adc_2',msg='今天好,不好,好?',rating=22) 

在输入:card.save()

则在数据库中可以看到我们添加的数据:

Django——2.ORM对象关系映射之对数据库的增删改查操作_第1张图片

接下来我在添加几个数据,方便后续操作。

Django——2.ORM对象关系映射之对数据库的增删改查操作_第2张图片

管理器赋予了Django模型操作数据库的能力

card.objects----->(模型.管理器类型就组成了管理器)

输入:Card.objects.all()     #就可以查看所有的信息

QuerySet就是数据集,提供了查询及嵌套查询的能力

不做筛选

all()   查询所有,不做任何筛选

做筛选

filter()  可以筛选数据

eg:我们筛选出,name为abc_1的数据

Django——2.ORM对象关系映射之对数据库的增删改查操作_第3张图片

注意:我们只要不去使用这个data 就不会数据库中查询数据,也就是说data只是保存了Card.objects.filter(name='python')这个表达式而已。

特殊查询——startswitch

查询以什么为开头的数据

相当于原生的sql语句:

select * from ITEM_2_CARD where name like 'abc%';

特殊查询——contains

查询的数据中包含你要的就会返回出来

相当于原生的sql语句:

select * from ITEM_2_CARD where name like '%_%';

还可以进行嵌套查询,eg:查询name以abc开头,rating等于19的数据。

F查询于Q查询

输入:from django.db.models import F     #要先引入

输入:Card.objects.filter(msg__contains='name')

在这里我们将name看成为一个字符串,在msg中没有name这个字符串。

输入:Card.objects.filter(msg__contains=F('name'))

我们用F查询,这里将name看成为一个变量,看msg中有没有name的信息,这是针对于同一条的数据进行查询的。

输入:from django.db.models import Q

输入:Card.objects.filter(Q(msg__contains=F('name')) | Q(rating =22))

Django——2.ORM对象关系映射之对数据库的增删改查操作_第4张图片

用Q查询,可以将多个条件连接起来。通过与或非(& | ~)将条件连接起来,如下:

将name为ABC的数据中的rating改为99

输入:Card.objects.filter(name='ABC').update(rating=99)

修改了一条数据,在mysql中看出,以修改完成

Django——2.ORM对象关系映射之对数据库的增删改查操作_第5张图片

将id为5的数据删除掉

输入:card=Card.objects.get(id=5)    #获取到id为5的数据

输入:card.delete()              #将其删除

Django——2.ORM对象关系映射之对数据库的增删改查操作_第6张图片

在mysql中,可看出已删除

Django——2.ORM对象关系映射之对数据库的增删改查操作_第7张图片

删除多条数据,可以通过filter()过滤查找到后,在通过delete()一次删除。

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