Django模型操作数据库
本文最后更新于:2 年前
通过ORM操作数据库
Django 提供了一个数据库抽象API,可以查询、添加、更新和删除数据。实现了 ORM 功能,在 Django 项目中,不需要写sql语句,通过模型类和对象,就可以直接操作数据库数据了。
可以通过以下命令,进入python交互环境,执行操作数据库的代码:
1 |
|
查询数据
每个模型类默认都有 objects 类属性,可以把它叫 模型管理器。Django的对象管理器提供了四个查询数据的方法:all()、filter()、exclude() 和 get() 。
objects管理器中的方法 | 返回类型 | 作用 |
---|---|---|
模型类.objects.get() | 模型对象 | 返回一个对象,且只能有一个: 如果查到多条数据,则报错:MultipleObjectsReturned ; 如果查询不到数据,则报错:DoesNotExist. |
模型类.objects.filter() | QuerySet | 返回满足条件的对象. |
模型类.objects.all() | QuerySet | 返回所有的对象. |
模型类.objects.exclude() | QuerySet | 返回不满足条件的数据. |
查询所有记录
查询编号为2的学校信息
查询编号不为2的学习信息
获取编号为1的学校的名字
添加数据
向数据表中添加数据有两种方式:一是使用模型管理器的 create() 方法添加数据,二是使用模型实例的 save() 方法保存数据。
create() 方法
create() 方法是模型类的管理器方法,模型类通过管理器调用该方法。为该方法传入数据,该方法可将传入的数据添加到数据表中。
save() 方法
save() 方法是模型对象的方法,模型实例可调用该方法将数据添加到数据库中。其语法格式如下:
1 |
|
参数 | 功能 |
---|---|
force_insert | 表示强制执行插入语句,不可与 force_update 同时使用。 |
force_update | 表示强制执行更新语句,不可与 force_insert 同时使用。 |
using | 用于将数据保存到指定的数据库。 |
update_fields | 用于指定更新的字段,其余的字段不更新。 |
更新数据
update() 是对象管理器的方法,用于根据查询条件更新数据表的指定字段,并返回生效的行数。
删除数据
删除数据使用对象的 delete() 方法,对应 SQL 中的删除操作,此方法会立即删除数据库中的记录,并返回删除记录的数量。
- 删除学生 lisi 的信息
- 删除年龄为22的学生的信息
采用游标对象操作数据库
Django提供了不使用模型访问数据库的方法:
- 调用 django.db.connection.cursor() 方法获得一个游标对象,django.db.connection 对象代表默认的数据库连接。
- 调用游标对象的execute(sql,[params])方法执行执行sql语句。
- 调用游标对象的 fetchall() 或 fetchone() 方法返回数据。
查询数据
查询 users_school 表所有记录
查询年龄大于20的学生的信息
添加数据
在 users_school 中添加华科的信息
添加学生王五的信息
更新数据
修改学生张三的所在学校为华科:
删除数据
删除学生王五的信息:
除了使用游标对象外,Django 也提供了两种方法使用原生 SQL 进行查询:一种是使用 raw() 方法,进行原生SQL查询并返回模型实例;另一种是用 extra() 方法。『传送门』
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!