模型的操作
先在终端中输入:python .\manage.py shell
进入了虚拟环境后,在输入:from Item_2.models import Card
导入模型后,可对数据库中创建的表进行增删改查等操作。
增
输入:card=Card(name='adc_2',msg='今天好,不好,好?',rating=22)
在输入:card.save()
则在数据库中可以看到我们添加的数据:
接下来我在添加几个数据,方便后续操作。
查
管理器赋予了Django模型操作数据库的能力
card.objects----->(模型.管理器类型就组成了管理器)
输入:Card.objects.all() #就可以查看所有的信息
QuerySet就是数据集,提供了查询及嵌套查询的能力
不做筛选
all() 查询所有,不做任何筛选
做筛选
filter() 可以筛选数据
eg:我们筛选出,name为abc_1的数据
注意:我们只要不去使用这个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))
用Q查询,可以将多个条件连接起来。通过与或非(& | ~)将条件连接起来,如下:
改
将name为ABC的数据中的rating改为99
输入:Card.objects.filter(name='ABC').update(rating=99)
修改了一条数据,在mysql中看出,以修改完成
删
将id为5的数据删除掉
输入:card=Card.objects.get(id=5) #获取到id为5的数据
输入:card.delete() #将其删除
在mysql中,可看出已删除
删除多条数据,可以通过filter()过滤查找到后,在通过delete()一次删除。