Django全栈开发学习笔记(十二)——数据的增、删、改、查

数据表操作

数据表操作主要为增、删、改、查、执行SQL语句和实现数据库事务等操作

  • 数据新增:有模型实例化对象调用内置方法实现数据新增
  • 数据修改必须执行一次数据查询,在对查询结果进行修改操作,常用方法有:模型实例化、update方法和批量更新bulk_update
  • 数据删除必须执行一次数据查询,再查询结果进行删除操作,若删除的数据设有外键字段,则删除结果由外键的删除模式设定
  • 数据查询分为单表查询和多表查询,Django提供多种不同查询的API方法
  • 执行SQL语句有3中方法实现:extra、raw和execute,其中extra和raw只能实现数据查询,具有一定局限性;而execute无须经过ORM框架处理,能够执行所有SQL语句,但很容易受到SQL注入攻击。
  • 数据库事务是指作为单个逻辑执行的一系列操作,这些操作具有原子性,即这些操作要么完全执行,要么完全不执行,常用语银行转账和火车票抢购等。

数据新增

方法示例:

v = Vocation()
v.job = '测试工程师'
v.title = '系统测试'
v.payment = 0
v.name_id = 3
v.save()
v=Vocation.objects.create(job='测试工程师',titile='系统测试',payment=0,name_id=3)
d = dict(job='测试工程师',title='系统测试',payment=0,name_id=3)
v=Vocation.objects.create(**d)
v = Vocation(job='测试工程师',titile='系统测试',payment=0,name_id=3)
v.save()

在执行数据插入时,为了保证数据有效性,需要对数据进行去重判断,为了简化这一过程,Django提供了get_or_create方法:

d = dict(job='测试工程师',title='系统测试',payment=0,name_id=3)
v=Vocation.objects.get_or_create(**d)

同样思路,Django还提供了update_or_create方法来判断数据是否存在,若存在则更新,若不存在则新增。
还可以对某个模型执行数据批量插入操作,使用bulk_create方法实现:

v1= Vocation(job='财务',title='会计',payment=0,name_id=1)
v2= Vocation(job='财务',title='出纳',payment=0,name_id=1)
ojb_list = [v1, v2]
Vocation.objects.bulk_create(ojb_list)

数据修改

数据修改方式与数据新增步骤大致相同,唯一区别在于需要先进行一次数据查询,然后将对象的属性进行赋值处理,代码如下:

v = Vocation.objects.get(id=1)
v.payment = 20000
v.save()

其他方法:

Vocation.objects.filter(job='测试工程师').update(job='测试员')
d= dict(job='测试员')
Vocation.objects.filter(job='测试工程师').update(**d)
Vocation.objects.update(payment=666)

上面这个不进行查询,对全表所有数据全部进行更新
下面还可以使用内置F方法

frome django.db.models import
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烧麦Sn0wSt@r

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值