添加
# 表.objects.create
# 方法一
a = User.objects.create(userNum=123, name='ABB', age=18, sex='男')
# 方法二
d = dict(userNum=123, name='ABB', age=18, sex='男')
a = User.objects.create(**d)
#方法三
a = User(userNum=123, name='ABB', age=18, sex='男')
a.save()
参数 | 解释 |
---|---|
get_or_create | 只要有一个字段值与数据表中不相同(除主键),就会执行插入操作 如果完全相同则不进行插入操作,而是返回这行数据的数据对象 |
update_or_create | 判断当前数据在数据表中是否存在,若存在则进行更新,否则为新增表数据 |
bulk_create | 对数据进行批量操作 v1 = User(userNum=123, name=‘ABB’, age=18, sex=‘男’) v2 = User(userNum=124, name=‘ABC’, age=19, sex=‘女’) info_list = [v1,v2] User.objects.bulk_create(info_list) |
删除
# 表.objects.filter().delete()
# 方法一 删除全部内容
User.objects.all().delete()
#方法二 删除一条name为ABC的数据
User.objects.filter(name='ABC').delete()
#方法三 删除多条数据
User.objects.filter(age=18).delete()
删除过程中数据设有外键字段,就会同时删除外键关联的数据,删除模式参考models.py中设置的PROTECT、SET_NULL等
修改
# 表.objects.filter().update()
# 方法一 修改name为ABC的性别为gay
User.objects.filter(name='ABC').update(sex='gay')
# 方法二
a = dict(age='1')
User.objects.filter(name='ABC').update(**a)
# 方法三 使用F方法实现自增/自减
from djanto.db.models import F
User.objects.filter(name='ABC').update(age=F('age')+1)
查询
# select * from user 全表查询
a = User.objects.all()
# 查第一条
a[0].name
# select * from user LIMIT3 查前3条
a = User.objects.all()[:3]
# filter 也可添加多个条件
User.objects.filter(name='ABC',age=18)
# SQL中or方法 select * from user where name='ABC' or age=18 ,需要引入 Q
from django.db.models import Q
User.objects.filter(Q(name='ABC') | Q(age=18))
# SQL中not方法 select * from user where not name='ABC' ,在Q前加~
User.objects.filter(~Q(name='ABC'))
# 统计数量
User.objects.filter(name='ABC').count()
# 去重 select DISTINCT name from user where name='ABC' ,distinct无需设置参数,去重方式根据values
a = User.objects.values('name').filter(name='ABC').distinct()
# 降序排序查询,降序在order_by里设置 '-'
User.objects.order_by('-age')
匹配符 | 使用 | 说明 |
---|---|---|
__exact | filter(name__exact=‘ABC’) | 完全等于 |
__iexact | filter(name__iexact =‘ABC’) | 完全等于并忽略大小写 |
__contains | filter(name__contains =‘ABC’) | 模糊匹配,类似SQL中like %ABC% |
__icontains | filter(name__icontains =‘ABC’) | 模糊匹配并忽略大小写 |
__gt | filter(name__gt =1) | 大于 |
__gte | filter(name__gte =1) | 大于等于 |
__lt | filter(name__lt=1) | 小于 |
__lte | filter(name__lte=1) | 小于等于 |
__isnull | filter(name__isnull=True/False) | 判断是否为空 |