#Models 模型
数据结构 + 算法 = 程序
---> URL ---> VIEW ---> Temple --->
DB:分类---关系
Teacher Student
姓名 年龄 地址 course
DB
MongoDB
Redis
-------------------------------------
# Models 模型
- ORM
-ObjectRelationMap: 把面向对象思想转换成关系数据库
* 类对应表格
* 类中的属性对用表中的字段
*在应用中的models.py文件中定义class
*所有需要使用ORM的class都必须是models.Model的子类
*class中的所有属性对应表格中的字段
*字段的类型都必须使用 models.xxx 不能使用python中的
*在django中,Models负责跟数据库交互
- django链接数据库
- 自带默认数据库Sqllite3
- 关系型数据库
- 轻量级
- 建议开发用sqlite3,部署用mysql之类数据库
- 切换数据库在settings中进行设置
# django 链接 mysql
DATABASES = [
'default' = {
'ENGINE' : 'django.db.backends.mysql',
'NAME':'数据库名',
‘PASSWORD’:'数据库密码',
‘HOST’:'127.0.0.1',
'PORT':'3306',
}
]
- 需要在项目文件下的__init__文件中导入pymysql包
# 在主项目文件下的__init__文件中导入pymysql包
···
# 在主项目的__init__文件中
import pymysql
pymysql.install_as_MySQLdb()
···
# models类的使用
- 定义和数据库表映射的类
- 在应用中的models.py文件中定义class
- 所有需要使用ORM的class都必须是models.Model的子类
- class中的所有属性对应表格中的字段
- 字段的类型都必须使用 modles.xxx 不能使用python中的类型
- 字段常用参数
1、max_length:规定数值的最大长度
2、blank:是否允许字段为空,默认不允许
3、null:在DB中控制是否保存为null,默认为false
4、default:默认值
5、unique:唯一
6、verbose_name:假名
- 数据库迁移
1、在命令行中,生成数据迁移的语句(生成sql语句)
```
python3 manage.py makemigrations
```
2、在命令行中,输入数据迁移的指令
```
python manage.py migrate
```
ps:如果迁移中出现没有变化或者报错,可以尝试强制迁移
···
# 强制迁移命令
python3 manage.py makemigrations 应用名
python3 manage.py migrate 应用名
```
3、对于默认数据库,为了避免出现混乱,如果数据库中没有数据,每次迁移前自带的sqlite3数据库删除
deactivate
activate
-