模型( Model ),就是 Python 中的类对应数据库中的表
ORM
ORM 就是通过实例对象的语法,完成关系型数据库的操作的技术,是”对象-关系映射”( Object/Relational Mapping ) 的缩写
from django.db import modelsclass Question(models, Model):question_text = models.CharField(max_length=200)pub_date = models.DateTimeField()
CREATE TABLE IF NOT EXSITS `polls_queston` (`id` INT(11) PRIMARY KEY AUTO_INCREMENT NOT NULL ,`question_text` VARCHAR(200) NOT NULL ,`pub_date` DATETIME(6) NOT NULL)
- 模型类必须继承 models.Model
- 每个属性对应数据库中的一个字段
- 表名自动使用 mysite_类型 的小写( 如: polls_question ),可以覆盖
- 如果模型类中没有指定 PRIMARY KEY,那么会自动创建一个 id 字段,自增且是主键
类生成表
通过在 model 文件中创建一个类,然后通过数据库迁移方式在数据库中生成表
准备工作
INSTALLED_APPS = ['应用名' -- 添加应用名]
DATABASES = {'default': {'ENGINE': 'django.db.backends.[数据库]', -- 修改成使用的数据库,如 mysql'NAME': '[应用名]','HOST': 'IP', -- 添加主机、用户和密码'USER': '[用户名]','PASSWORD': '[密码]','PORT': 端口 -- 端口没有引号}}
需提前安装好数据库驱动,如 Mysql 安装好 pymysql
预备迁移
python manage.py makemigrations [应用名]
- 如果不指定应用名,那么会对 settings 文件里的所有 INSTALLED_APPS 中的应用都进行预备迁移
- 指定应用名,会在对应的应用下的 migrations 文件中生成一个对应的迁移文件
正式迁移
python manage.py migrate [应用名]
- 如果不指定应用名,那么会把 Django 项目中的所有应用都迁移到数据库中
表生成类
- settings 中设置好 DATABASES配置
- 在数据库中建立好表、约束和表关系等
- 运行生成命令后,在 models 中查看生成的模型类
python manage.py inspectdb > 应用名/model.py
