美文网首页
Django数据库操作之save与update

Django数据库操作之save与update

作者: wu_sphinx | 来源:发表于2015-02-27 23:01 被阅读20160次

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操作很有必要。

相关文章

  • Django数据库操作之save与update

    Python框架Django有着诸多优点,它提供的models可以让开发者方便地操作数据库,但正是由于对上层的良好...

  • django安装和数据获取

    Django提供了多种方式来获取数据库的内容 更新数据修改数据可以使用 save() 或 update(): 删除...

  • Django model select的各种用法详解

    《Django model update的各种用法介绍》文章介绍了Django model的各种update操作,...

  • Django(orm)映射做models管理

    在管理器类中定义创建对象的方法 当创建模型类对象时,django不会对数据库进行读写操作,调用save()方法才与...

  • python bugs

    操作mysql数据库报错Incorrect string value Django之TIME_ZONE初探 关于P...

  • sqlite(18)-java

    连接数据库# 创建表# INSERT操作# SELECT操作# UPDATE操作# DELETE操作#

  • 管理器 Manager

    管理器是 Django 的模型进行数据库的查询操作的接口 ,用于与数据库进行交互,Django 应用的每个模型都拥...

  • MySQL | 数据操作语言:DML

    DML 数据操作语言.插入,删除与更新数据库表中的数据. insert delete update insert ...

  • Rails 无法保存/更新数据(对象)

    上下文 想更改对象的属性,update,save等方法却不生效。以下在命令行操作: 解决方法 其实update和s...

  • 如何查看Django ORM执行的SQL语句

    Django ORM对数据库操作的封装相当完善,日常大部分数据库操作都可以通过ORM实现。但django将查询过程...

网友评论

      本文标题:Django数据库操作之save与update

      本文链接:https://www.haomeiwen.com/subject/dtxrtttx.html