加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_新乡站长网 (https://www.0373zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Django数据库操作之save与update

发布时间:2022-11-04 10:52:56 所属栏目:MySql教程 来源:
导读:  Python框架Django有着诸多优点,它提供的models可以让开发者方便地操作数据库,但正是由于对上层的良好的封装数据库更新操作,使得提升数据库操作性能必须要清楚地知道Django的数据库操作到底执行了哪些SQL语句。
  Python框架Django有着诸多优点,它提供的models可以让开发者方便地操作数据库,但正是由于对上层的良好的封装数据库更新操作,使得提升数据库操作性能必须要清楚地知道Django的数据库操作到底执行了哪些SQL语句。
 
  例如数据更新操作,对单条记录,可以使用save或者是update两种方式
 
  在Django工程下的settings.py下将log设置为DEBUG,即可查看save和update分别执行了哪些SQL语句
 
  如有一张表名叫做Example
 
  使用save:
 
  k = Example.objects.get(id=481)
  k.total_calories = 12
  k.save()
  执行的SQL语句如下所示:
 
  SELECT (1) AS `a` FROM `Example` WHERE `
  Example`.`id` = 481  LIMIT 1; args=(481,)
  UPDATE `Example` SET `user_id` = asdfasdf, `event_id` = -1, `join_type` = 0, `name` = , `phon
  e` = , `email` = , `company_name` = , `address` = , `if_type` = 0, `code` = , `l
  ocation` = , `total_days` = 0, `total_length` = 0, `total_calories` = 12, `comme
  nts` = , `reserved_1` = , `reserved_2` = , `reserved_3` = , `reserved_4` = , `re
  served_5` = , `create_datetime` = 2015-02-02 17:43:53 WHERE `Example`
  .`id` = 481 ; args=(u'asdfasdf', -1, 0, u'', u'', u'
  ', u'', u'', 0, u'', u'', 0, 0, 12, u'', u'', u'', u'', u'', u'', u'2015-02-02 1
  7:43:53', 481)
  首先要查询k这条记录,然后save()的时候提交更新的内容,发现更新的时候把Example中的有字段都SET赋值的一次
 
  使用update
 
  Example.objects.filter(id=481).update(total_calories = 10)
  执行的SQL语句是:
 
  UPDATE `Example` SET `total_calories` = 1
  0 WHERE (`Example`.`user_id` = asdfasdf
  AND `Example`.`id` = 481 ); args=(10, u'asdfasdf', 481)
  这条SQL语句简短而且执行速度要优于使用save的速度。
 
  从SQL的执行情况来看,使用upate是要优于save方式的。
 
  从使用情境上看,update更加适用于批量数据更新,而save则更适合当然也只适合做单条记录的数据更新操作了。
 
  在使用Django的数据模型操作数据库时,了解这些底层的SQL操作很有必要。
 

(编辑:开发网_新乡站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!