Django数据库增删改查

本文详细介绍了Django ORM在数据库操作中的常见方法,包括如何创建对象(create和save方法)、更新数据(update_or_create与直接update)、批量操作(bulk_create)以及删除数据。此外,还涵盖了各种查询技巧,如过滤、排序、统计等,并展示了各种比较运算符的用法,如exact、iexact、contains等。对于数据库操作,理解这些方法是高效开发的基础。
摘要由CSDN通过智能技术生成
添加
# 表.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')

匹配符使用说明
__exactfilter(name__exact=‘ABC’)完全等于
__iexactfilter(name__iexact =‘ABC’)完全等于并忽略大小写
__containsfilter(name__contains =‘ABC’)模糊匹配,类似SQL中like %ABC%
__icontainsfilter(name__icontains =‘ABC’)模糊匹配并忽略大小写
__gtfilter(name__gt =1)大于
__gtefilter(name__gte =1)大于等于
__ltfilter(name__lt=1)小于
__ltefilter(name__lte=1)小于等于
__isnullfilter(name__isnull=True/False)判断是否为空
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值