一、介绍
模型,就是python中的类对应数据库中的表
1.1、ORM
ORM 就是通过实例对象的语法,完成关系型数据库的操作的技术,是”对象-关系映射”(Object/Relational Mapping) 的缩写
ORM 把数据库映射成对象
1.2、示例
1.2.1、模型
from django.db import modelsclass Person(models.Model):first_name = models.CharField(max_length=30)last_name = models.CharField(max_length=30)
1.2.2、数据库表
CREATE TABLE myapp_person ("id" bigint NOT NULL PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,"first_name" varchar(30) NOT NULL,"last_name" varchar(30) NOT NULL);
说明
- 模型类必须继承models.Model
- 每个属性对应数据库表中的一个字段
- 表名自动使用 应用_类名 的小写(如:polls_question),可以覆盖重写
- 如果模型类中没有指定 primary_key ,那么会自动创建一个 id 字段,自增,主键
二、MySQL数据库迁移
当编写了模型之后,需要将模型应用到数据库中,具体步骤如下:
创建项目model_study,及子应用model_app
#创建项目$ django-admin startproject model_study#进入项目目录创建子应用$ python manage.py startapp model_app
配置应用,将模型对应的应用程序添加到项目的settings中:
INSTALLED_APPS = ['model_app']
在settings.py中配置正确的数据库连接:
# mysqlDATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'model_study','USER': 'root','PASSWORD': 'root','HOST': '127.0.0.1','PORT': 3306, }}
注意
需要安装对应数据库的驱动
pip install mysqlclient==2.1.1
pip install pymysql
# __init__.pyimport pymysqlpymysql.install_as_MySQLdb()
- 需要在mysql数据库中创建数据库model_study
2.1、创建迁移
在项目根目录的cmd中运行:
$ python manage.py makemigrations model_app
备注
- model_app是子应用的名称,如果不指定,那么就是对所有 INSTALLED_APPS 中的应用都进行预备迁移
- 指定该命令后,在对应的子应用下的 migrations 中会生成一个对应的迁移文件
2.2、正式迁移
在根目录的cmd中运行:
$ python manage.py migrate
备注
没有添加子应用名,那么就会把django项目中所有的应用都迁移到数据库中
三、sqlite3数据库迁移
当编写了模型之后,需要将模型应用到数据库中,具体步骤如下:
创建项目model_study,及子应用model_app
#创建项目$ django-admin startproject model_study#进入项目目录创建子应用$ python manage.py startapp model_app
配置应用,将模型对应的应用程序添加到项目的settings中:
INSTALLED_APPS = ['model_app']
在settings.py中配置正确的数据库连接:
# sqlite3DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3','NAME': os.path.join(BASE_DIR, 'db.sqlite3'), }}
注意
- 需要安装对应数据库的驱动
- 需要在mysql数据库中创建数据库model_study
3.1、创建迁移
在项目根目录的cmd中运行:
$ python manage.py makemigrations model_app
备注
- model_app是子应用的名称,如果不指定,那么就是对所有 INSTALLED_APPS 中的应用都进行预备迁移
- 指定该命令后,在对应的子应用下的 migrations 中会生成一个对应的迁移文件
3.2、正式迁移
在根目录的cmd中运行:
$ python manage.py migrate
备注
没有添加子应用名,那么就会把django项目中所有的应用都迁移到数据库中
四、更新数据库表结构
不管是新增模型,还是修改已有模型后,只需要执行行命令即可:
4.1、创建迁移
在项目根目录的cmd中运行:
$ python manage.py makemigrations model_app
备注
- model_app是子应用的名称,如果不指定,那么就是对所有 INSTALLED_APPS 中的应用都进行预备迁移
- 指定该命令后,在对应的子应用下的 migrations 中会生成一个对应的迁移文件
4.2、正式迁移
在根目录的cmd中运行:
$ python manage.py migrate
备注
没有添加子应用名,那么就会把django项目中所有的应用都迁移到数据库中
4.3、设置表名
在模型中建立内部类Meta设置db_table即可
# Create your models here.class Person(models.Model):first_name = models.CharField(max_length=10)lname = models.CharField(max_length=30)age = models.CharField(max_length=30)class Meta:db_table = 't_person'