一、内容回顾
1、路由层
a、简单使用
b、有名分组
c、路由分发
d、反向解析
2、视图层
a、HttpRequest对象
-
-
- 常用的属性
- 常用方法
-
b、HttpResponse对象
响应三剑客
3、模板层
a、模板之变量
b、模板之过滤器
c、模板之标签
d、自定制标签和过滤器
e、模版继承
二、今日概要
1、ORM简介
2、单表操作
三、今日详细
1、ORM简介
对象关系映射(Object Relational Mapping,简称ORM)。
简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。
ORM在业务逻辑层和数据库层之间充当了桥梁的作用。
咱们通过一张图来介绍一下数据库与python代码之间的一个关系,请看下图:
ORM的优点:
-
-
- 不用写繁琐的SQL语句,用咱们熟悉的python代码,就能实现对数据的操作,提高开发效率;
-
可以平滑的操作,切换数据库。
-
ORM的缺点:
-
-
-
ORM代码转换为SQL语句时,需要花费一定的时间,执行效率会有所降低;
-
长期写ORM代码,导致写SQL语句能力,会有所减弱。
-
-
如果想打印orm转换过程中的sql,需要在settings中进行如下配置:
2、单表操作
1、Django如何使用MySQL数据库
接下来,咱们梳理一下django使用MySQL的流程:
1、创建MySQL数据库。
注意:ORM无法操作到数据库级别,只能操作到数据表。
1
|
create database book_demo default charset=utf8; # 防止编码问题,指定为utf8. |
2、在settings.py里设置
1
2
3
4
5
6
7
8
9
10
11
|
# settings.py配置文件 DATABASES = { 'default' : { 'ENGINE' : 'django.db.backends.mysql' , 'NAME' : '数据库名' , 'HOST' : '数据库IP地址' , 'PORT' : 3306 , 'USER' : 'root' , 'PASSWORD' : '', } } |
3、告诉Django使用pymysql模块连接mysql数据库
1
2
3
|
# 在与settings.py同级目录下的__init__.py中 import pymysql pymysql.install_as_MySQLdb() |
4、创建模型(在models.py中写类)
class Book(models.Model): id = models.AutoField(primary_key=True) title = models.CharField(max_length=32) # 书籍名称 price = models.DecimalField(max_digits=5, decimal_places=2) # 书籍价格 publisher = models.CharField(max_length=32) # 出版社名称 pub_date = models.DateField() # 出版时间
扩展:更多字段和参数
每个字段有一些特有的参数,例如,CharField需要max_length参数来指定VARCHAR
数据库字段的大小。还有一些适用于所有字段的通用参数。 这些参数在文档中有详细定义,这里我们只简单介绍一些最常用的:
更多字段:
更多参数:
5、执行数据量迁移的命令
1
2
|
python manage.py makemigrations # 把models.py的变更记录记录下来 python manage.py migrate # 把变更记录的操作同步到数据库中 |
注意:如果报错如下:
1
|
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3 . 3 or newer is required; you have 0.7 . 11.None |