Django模型操作数据库

本文最后更新于:2 年前

通过ORM操作数据库

Django 提供了一个数据库抽象API,可以查询、添加、更新和删除数据。实现了 ORM 功能,在 Django 项目中,不需要写sql语句,通过模型类和对象,就可以直接操作数据库数据了。

可以通过以下命令,进入python交互环境,执行操作数据库的代码:

1
python manage.py shell

查询数据

每个模型类默认都有 objects 类属性,可以把它叫 模型管理器。Django的对象管理器提供了四个查询数据的方法:all()filter()exclude()get()

objects管理器中的方法 返回类型 作用
模型类.objects.get() 模型对象 返回一个对象,且只能有一个:
如果查到多条数据,则报错:MultipleObjectsReturned ;
如果查询不到数据,则报错:DoesNotExist.
模型类.objects.filter() QuerySet 返回满足条件的对象.
模型类.objects.all() QuerySet 返回所有的对象.
模型类.objects.exclude() QuerySet 返回不满足条件的数据.

  1. 查询所有记录

  2. 查询编号为2的学校信息

  3. 查询编号不为2的学习信息

  4. 获取编号为1的学校的名字

添加数据

向数据表中添加数据有两种方式:一是使用模型管理器的 create() 方法添加数据,二是使用模型实例的 save() 方法保存数据。

create() 方法

create() 方法是模型类的管理器方法,模型类通过管理器调用该方法。为该方法传入数据,该方法可将传入的数据添加到数据表中。

save() 方法

save() 方法是模型对象的方法,模型实例可调用该方法将数据添加到数据库中。其语法格式如下:

1
save(force_insert=False, force_update=False, using=None,update_fields=None)
参数 功能
force_insert 表示强制执行插入语句,不可与 force_update 同时使用。
force_update 表示强制执行更新语句,不可与 force_insert 同时使用。
using 用于将数据保存到指定的数据库。
update_fields 用于指定更新的字段,其余的字段不更新。

更新数据

update() 是对象管理器的方法,用于根据查询条件更新数据表的指定字段,并返回生效的行数。

删除数据

删除数据使用对象的 delete() 方法,对应 SQL 中的删除操作,此方法会立即删除数据库中的记录,并返回删除记录的数量。

  1. 删除学生 lisi 的信息
  2. 删除年龄为22的学生的信息

采用游标对象操作数据库

Django提供了不使用模型访问数据库的方法:

  • 调用 django.db.connection.cursor() 方法获得一个游标对象,django.db.connection 对象代表默认的数据库连接。
  • 调用游标对象的execute(sql,[params])方法执行执行sql语句。
  • 调用游标对象的 fetchall() 或 fetchone() 方法返回数据。

查询数据

  1. 查询 users_school 表所有记录

  2. 查询年龄大于20的学生的信息

添加数据

  1. 在 users_school 中添加华科的信息

  2. 添加学生王五的信息

更新数据

修改学生张三的所在学校为华科:

删除数据

删除学生王五的信息:


除了使用游标对象外,Django 也提供了两种方法使用原生 SQL 进行查询:一种是使用 raw() 方法,进行原生SQL查询并返回模型实例;另一种是用 extra() 方法。『传送门