Model
1、插入(略)
2、查询
1、基本查询操作 - Entry.objects.all()
2、查询接口
1、all()
Entry.objects.all()
select * from .... ....
2、values("字段名",'字段名')
作用:查询所有行某一列的值
Entry.objects.all().values('name')
select name from ... ...
3、get()
只查找一条记录时使用,只能返回一条记录,如果返回多条,则报错
4、filter()
自定义查找条件,可以给多个条件,如果是多条件,则使用 AND 连接
1、有Entry的属性作为filter的条件
Author.objects.filter(name='xx')
select * from author where name='xx'
Author.objects.filter(name='xx',age=15)
select * from author where name='xx' and age=15
2、使用 Field Lookups
Author.objects.filter(id__gt=4)
select * from * where id>4
3、Author.objects.filter(id__exact=5);
select * from * where id=5
4、Author.objects.filter(name__contains='zh')
select * from * where name like '%zh%'
5、Author.objects.filter(id__in=[1,2,3])
select * from * where id in (1,2,3)
6、
inner_query = Author.objects.filter(name__exact='逐梦').values('age')
authors = Author.objects.filter(age__gt=inner_query)
5、exclude() : 对条件取反
Author.objects.exclude(name='zh',age=28)
select * from author where not(name='zh' and age=28)
6、order_by()
按指定的字段们进行排序,如果是多个的话,中间用 , 隔开,默认是升序排序,降序则在名称添加 -即可
Author.objects.order_by('-name','-age')
3、修改接口
1、修改单个对象
先通过get获取到响应的Model对象,再Model对象修改值,最后调用Model对象的 save() 函数 即可
obj=Author.objects.get(id=1)
obj.name = "问道"
obj.age = 25
obj.save()
2、批量修改(修改结果集的值)
调用 update() 函数即可
Author.objects.all().update(字段='值',...)
4、删除接口
1、删除单个对象
获取删除的对象,调用 delete()
obj = Author.object.get(id=1)
obj.delete()
2、批量删除
得到查询结果集之后 调用 delete()
Author.objects.all().delete()
5、F()操作 和 Q()操作
1、F()操作
作用:专门获取对象中某列的值
语法:F('列名')
from django.db.model import F
def do_F(request):
authors = Author.objects.all();
authors.update(age=F('age')+10)
return HttpResponse("... ...");
2、Q()操作
作用:对对象进行复杂操作,自定义关联多个查询条件
def do_Q(request):
q = Q()
q.connector = 'AND' //指定查询的关联条件
q.children.append(('id',2))
q.children.append(('age',25))
authors = Author.objects.filter(q)
return render(...)
6、原生的数据库操作
1、查询
函数:raw()
语法:Entry.objects.raw(sql)
2、增删改
def sql(request):
with connection.cursor() as cursor:
sql = 'delete from index_author where id=5'
cursor.execute(sql)
return render(...)
1、插入(略)
2、查询
1、基本查询操作 - Entry.objects.all()
2、查询接口
1、all()
Entry.objects.all()
select * from .... ....
2、values("字段名",'字段名')
作用:查询所有行某一列的值
Entry.objects.all().values('name')
select name from ... ...
3、get()
只查找一条记录时使用,只能返回一条记录,如果返回多条,则报错
4、filter()
自定义查找条件,可以给多个条件,如果是多条件,则使用 AND 连接
1、有Entry的属性作为filter的条件
Author.objects.filter(name='xx')
select * from author where name='xx'
Author.objects.filter(name='xx',age=15)
select * from author where name='xx' and age=15
2、使用 Field Lookups
Author.objects.filter(id__gt=4)
select * from * where id>4
3、Author.objects.filter(id__exact=5);
select * from * where id=5
4、Author.objects.filter(name__contains='zh')
select * from * where name like '%zh%'
5、Author.objects.filter(id__in=[1,2,3])
select * from * where id in (1,2,3)
6、
inner_query = Author.objects.filter(name__exact='逐梦').values('age')
authors = Author.objects.filter(age__gt=inner_query)
5、exclude() : 对条件取反
Author.objects.exclude(name='zh',age=28)
select * from author where not(name='zh' and age=28)
6、order_by()
按指定的字段们进行排序,如果是多个的话,中间用 , 隔开,默认是升序排序,降序则在名称添加 -即可
Author.objects.order_by('-name','-age')
3、修改接口
1、修改单个对象
先通过get获取到响应的Model对象,再Model对象修改值,最后调用Model对象的 save() 函数 即可
obj=Author.objects.get(id=1)
obj.name = "问道"
obj.age = 25
obj.save()
2、批量修改(修改结果集的值)
调用 update() 函数即可
Author.objects.all().update(字段='值',...)
4、删除接口
1、删除单个对象
获取删除的对象,调用 delete()
obj = Author.object.get(id=1)
obj.delete()
2、批量删除
得到查询结果集之后 调用 delete()
Author.objects.all().delete()
5、F()操作 和 Q()操作
1、F()操作
作用:专门获取对象中某列的值
语法:F('列名')
from django.db.model import F
def do_F(request):
authors = Author.objects.all();
authors.update(age=F('age')+10)
return HttpResponse("... ...");
2、Q()操作
作用:对对象进行复杂操作,自定义关联多个查询条件
def do_Q(request):
q = Q()
q.connector = 'AND' //指定查询的关联条件
q.children.append(('id',2))
q.children.append(('age',25))
authors = Author.objects.filter(q)
return render(...)
6、原生的数据库操作
1、查询
函数:raw()
语法:Entry.objects.raw(sql)
2、增删改
def sql(request):
with connection.cursor() as cursor:
sql = 'delete from index_author where id=5'
cursor.execute(sql)
return render(...)