前言
ORM
- MVT设计模式中的Model, 专门负责和数据库交互.对应(models.py)
- 由于Model中内嵌了ORM框架, 所以不需要直接面向数据库编程.
- 而是定义模型类, 通过模型类和对象完成数据库表的增删改查.
- ORM框架就是把数据库表的行与相应的对象建立关联, 互相转换.使得数据库的操作面向对象
![在这里插入图片描述](https://img-blog.csdnimg.cn/f70e39d89d8142c6a6e3c458ce220d2f.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/52f39999009547509c201e3ac93e624d.png)
- 映射关系
![在这里插入图片描述](https://img-blog.csdnimg.cn/ec2353fbe0384c14bbd9004a6d5b6e1e.png)
开发步骤
需求分析
- 以下为书籍信息管理的数据关系:书籍和人物是 :一对多关系
![在这里插入图片描述](https://img-blog.csdnimg.cn/3f092147907246f489bc331ce4d56fd2.png)
- 先分析出项目中所需要的数据, 然后设计数据库表.
书籍信息表
字段名 | 字段类型 | 字段说明 |
---|
id | AutoField | 主键 |
name | CharField | 书名 |
人物信息表
字段名 | 字段类型 | 字段说明 |
---|
id | AutoField | 主键 |
name | CharField | 人名 |
gender BooleanField | 性别 | |
book | ForeignKey | 外键 |
id | name | gender | book |
---|
1 | 孙悟空 | False | 1 |
2 | 白骨精 | True | 1 |
3 | 曹操 | False | 2 |
4 | 貂蝉 | True | 2 |
1. 定义模型类
- 在models.py中定义模型类,继承自models.Model
"""
1. 我们的模型类 需要继承自 models.Model
2. 系统会自动为我们添加一个主键--id
3. 字段
字段名=model.类型(选项)
字段名其实就是数据表的字段名
字段名不要使用 python,mysql等关键字
char(M)
varchar(M)
M 就是选项
"""
class BookInfo(models.Model):
name=models.CharField(max_length=10)
class PeopleInfo(models.Model):
name = models.CharField(max_length=10)
gender = models.BooleanField()
book = models.ForeignKey(BookInfo,on_delete=models.CASCADE)
2. 模型迁移(建表)
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'helloworld'
]
- 修改数据库配置;默认使用的是sqlite3数据库,修改为mysql数据库
- 安装mysqlclient包
pip install mysqlclient
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'dj_study',
'USER': 'root',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '3306',
}
}
- 生成迁移文件:根据模型类生成创建表的语句
python manage.py makemigrations
![在这里插入图片描述](https://img-blog.csdnimg.cn/eef39ac7b8c644dca180945f8549d507.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/f623dee7dea24d4db1e6049e4395cdc3.png)
2. 执行迁移:根据第一步生成的语句在数据库中创建表
python manage.py migrate
![在这里插入图片描述](https://img-blog.csdnimg.cn/1883644d65ae4b4fad83266902b304f3.png)
3. 操作数据库