DJango操作数据
增
1.create
dic = {
‘user’:’student’,
‘pwd’:’123456’
}
class.objects.create(dic)
2. 赋值
b = class()
b.user = ‘student’
b.pwd = ‘123456’
b.save() 将数据保存
删
Class.objects.filter(一个或多个字段).delete()
改
1. update
class.object.filter(一个或多个字段).update(字段=新值)
2. get
b = class.objects.get(字段)
b.price = 999 (b.字段=新值)
b.save()
查
获取个数
Tb1.objects.filter(name='seven').count()
范围
Tb1.objects.filter(id__gt=1) # 获取id大于1的值
Tb1.objects.filter(id__lt=10) # 获取id小于10的值
Tb1.objects.filter(id__lt=10, id__gt=1) # 获取id大于1 且 小于10的值
Tb1.objects.filter(id__in=[11, 22, 33]) # 获取id等于11、22、33的数据
Tb1.objects.exclude(id__in=[11, 22, 33]) # not in
__exact 精确等于 like ‘aaa’
__iexact 精确等于 忽略大小写 ilike ‘aaa’
__contains 包含 like ‘%aaa%’
__icontains 包含 忽略大小写 ilike ‘%aaa%’,但是对于sqlite来说,contains的作用效果等同于icontains。
__gt 大于
__gte 大于等于
__lt 小于
__lte 小于等于
__in 存在于一个list范围内
__startswith 以…开头
__istartswith 以…开头 忽略大小写
__endswith 以…结尾
__iendswith 以…结尾,忽略大小写
__range 在…范围内
__year 日期字段的年份
__month 日期字段的月份
__day 日期字段的日
__isnull=True/False
__isnull=True 与 __exact=None的区别
排序 order_by
Tb1.objects.filter(name='seven').order_by('id') # asc
Tb1.objects.filter(name='seven').order_by('-id') # desc
get
返回的是一个对象。结果是字典形式,不存在则报错,存在多个也报错
filter
返回结果为queryset,实质上就是满足filter条件的对象的集合(不是数据类型的集合),其结果的表现形式是列表,单独更具体的获取其中的对象时可以用下表来操作。类似[ object1, object2,object3, object4,object5, object6 ·········· ] )表格就映射成一个类,里面的每一行记录就是一个对象,get方法就是获取其中的一个元素,获取的是满足条件的某一个个体,而filter类似于高级函数filter,其结果是筛选出符合条件的一个或多个(至少一个),其得到的结果依然是一个群组概念
得到值
user = class.object.all() 也可不获取所有 user = class.object.all()[:10] 或 user = class.object.filter(id__lt=10)得到id小于10 的queryset
lst = user.values_list(‘id’,’name’) 得到的是一个列表,里面嵌套了列表(这个列表是queryset类型
列: [[1,’wang’], [2,’li], [3,’zhao]]
如果要取值的话得先将它转换成列表: list(lst),这样的话就将queryset类型装换成了list类型了
lst = user.vaules(‘id’,’name’) 得到的是一个列表,里面嵌套字典,字典格式
列: [{‘id’:1,’name’:’wang’}, {‘id’:2,’name’:’li},{‘id’:3,’name’:’zhao},]
get
user = class.object.get(id=1)
直接user.属性即可,因为get得到的一个对象,就一个值
id_value = user.id
列:1