模型层一单表操作

7.1 ORM简介

MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的工作量,不需要面对因数据库变更而导致的无效劳动 ORM是“对象-关系-映射”的简称。

图重 birthday DATA 改成DATE,后期会修改图片内容

7.2 单表操作

1 创建模型

创建名为book的app,在book下的models.py中创建模型:

2 更多字段和参数 每个字段有一些特有的参数,例如,CharField需要max_length参数来指定VARCHAR数据库字段的大小。还有一些适用于所有字段的通用参数。 这些参数在文档中有详细定义,这里我们只简单介绍一些最常用的:

更多字段:

更多参数:

3 settings配置

若想将模型转为mysql数据库中的表,需要在settings中配置:

注意1:NAME即数据库的名字,在mysql连接前该数据库必须已经创建,而上面的sqlite数据库下的db.sqlite3则是项目自动创建 USER和PASSWORD分别是数据库的用户名和密码。设置完后,再启动我们的Django项目前,我们需要激活我们的mysql。然后,启动项目,会报错:no module named MySQLdb 。这是因为django默认你导入的驱动是MySQLdb,可是MySQLdb 对于py3有很大问题,所以我们需要的驱动是PyMySQL 所以,我们只需要找到项目名文件下的init,在里面写入:

最后通过两条数据库迁移命令即可在指定的数据库中创建表 :

注意2:确保配置文件中的INSTALLED_APPS中写入我们创建的app名称

注意3:如果报错如下:

MySQLclient目前只支持到python3.4,因此如果使用的更高版本的python,需要修改如下:

通过查找路径C:\Programs\Python\Python36-32\Lib\site-packages\Django-2.0-py3.6.egg\django\db\backends\mysql 这个路径里的文件把

注释掉 就OK了。 注意4: 如果想打印orm转换过程中的sql,需要在settings中进行如下配置:

一、添加表纪录

方式1

方式2

二、查询表纪录

查询API

基于双下划线的模糊查询

三、删除表纪录

删除方法就是 delete()。它运行时立即删除对象而不返回任何值。例如:

你也可以一次性删除多个对象。每个 QuerySet 都有一个 delete() 方法,它一次性删除 QuerySet 中所有的对象。 例如,下面的代码将删除 pub_date 是2005年的 Entry 对象:

在 Django 删除对象时,会模仿 SQL 约束 ON DELETE CASCADE 的行为,换句话说,删除一个对象时也会删除与它相关联的外键对象。例如:

要注意的是: delete() 方法是 QuerySet 上的方法,但并不适用于 Manager 本身。这是一种保护机制,是为了避免意外地调用 Entry.objects.delete() 方法导致 所有的 记录被误删除。如果你确认要删除所有的对象,那么你必须显式地调用:

如果不想级联删除,可以设置为:

四、修改表纪录

此外,update()方法对于任何结果集(QuerySet)均有效,这意味着你可以同时更新多条记录update()方法会返回一个整型数值,表示受影响的记录条数。

五 、章节作业

1 图书管理系统 实现功能:book单表的增删改查 2 查询操作练习

Last updated

Was this helpful?