增加数据
初始化模型对象,然后调用 save() 将其存入数据库。
Django 在你显式调用 save() 才操作数据库,save() 方法没有返回值。
author = Author(author_name='admin')
author.save()
创建一个对象并直接存入数据库
author = Author.objects.creaet(author_name='admin')
批量增加数据
https://docs.djangoproject.com/zh-hans/4.0/ref/models/querysets/#bulk-create
删除数据
author = Author.objects.get(author_nane='admin')
author.delete()
修改数据
author = Author.objects.get(author_name='admin')
author.address = 'beijing'
author.save()
F对象,原始值对象,方便在原始数据的基础上进行数据更新。批量更新
models.Aricle.objects.filter(title='TEST').update(view_count=F('view_count')+1)
查询数据
1.使用get方法,结果只能是一条,查询结果为空或者是多条数据会抛出异常。
author = Author.objects.get(author_name='admin')
2.使用filter方法,结果可以是0条或多条,返回的是一个集合。
author_group = Author.objects.filter(author_name='admin')
指定多个查询条件,使用filter方法
author_group = Author.objects.filter(author_name='admin', address='beijing')
author_group = Author.objects.filter(author_name='admin').filter(address='beijng')
模糊查询
author_group = Author.objects.filter(author_name__contains='admin')
空值查询
author_group = Author.objects.filter(author_name__isnull=True)
数值集合
author_grup = Author.objects.filter(author_name__in=['admin','guest'])
关系查询,gt大于,gte大于等于,lt小于,lte小于等于,eq等于
author_group = Author.objects.filter(age__gt=18)
日期查询,year限定年份,month,day,week_day,hour,minute
author_group = Author.objects.filter(birthday__year=2021)
查询所有数据
author_group = Author.objects.all()
查询不满足条件的记录合集,excluede方法
author_group = Auhtor.objects.exclude(author_name='admin')
将查询的记录合集排序,order_by方法
author_group = Author.objects.all().order_by('author_name')
将查询的记录合集返回JSON格式,values方法
author_group = Author.objects.all().values()
查询满足条件的记录数量,count方法
author_group_count = Author.objects.filter(author_name='admin').count()
提取满足条件的记录合集中的第一条,first方法
author = Author.objects.filter(author_name='admin').first()
提取出满足条件的记录合集中最后一条,last方法
author = Author.objects.filter(author_name='admin').last()
查看是否有满足条件的记录,exists方法,返回布尔值
have_author = Author.objects.filter(author_name='admin').exists()
Q对象,条件对象
from django.db.models import Q
NOT操作,使用~表示
author_group = Author.objects.filter(~Q(suthor_name='admin'))
AND操作,使用and或者&表示
author_group = Author.objects.filter(Q(suthor_name='admin') and Q(status='1'))
OR操作,使用or或者|表示
author_group = Author.objects.filter(Q(suthor_name='admin') or Q(author_name='guest'))
自定义查询语句,raw方法
Author.objects.raw('select * from author')
自定义查询语句,拼接参数,如下写法可以防止SQL注入
Author.objects.raw('select * from author where author_name = %s and password = %s', [username, password1])
高级操作
get_or_create
https://blog.csdn.net/weixin_44649870/article/details/100566014
顾名思义,查询或者创建一条数据,首先是执行的时候首先会去查询有没有这个值,如果有就返回,没有就创建。
会返回一个tuple,第一个值是查到或者创建的数据,第二个值是一个布尔,表示是否执行了创建操作。
user, created = User.objects.get_or_create(u_id=1, name="张三", defaults={'address':'上海'})
等价于
users = User.objects.filter(u_id=1, name="张三").first()
if user:
print(user)
else:
user = User.objects.create(u_id=1, name="张三", address="上海")
print(user)
参数
**kwargs,数据的查询条件。
defaults,如果没有查到数据,创建数据时提供的填充数据。