django 模型层
数据库迁移
数据备份
python manage.py dumpdata 应用名字 > 应用名字_data.json
表结构同步
# 首先创建数据库并更新配置
# 数据库名字 数据库用户名 数据库密码
# 在settings.py 完成数据库配置
# 迁移数据库表
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
},
'slave': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'backend',
'USER': 'root',
'PASSWORD': '',
'HOST': '127.0.0.1',
'PORT': '3306'
}
}
"""
default 是django默认的数据库
slaves 是备份数据库,只有default挂了,才会使用备份数据库
这里面的数据是可以同步的。
"""
# 数据库表结构的同步
python manage.py migrate --run-syncdb --database slave
* --run-syncdb 表示同步数据库的意思
* --database 同步数据库 目的数据库是什么 slave
数据迁移
#完成以上两部之后,就可以导入数据了
python manage.py loaddata 应用名字_data.json
数据库索引
索引
* 索引会加快数据的检索速度
* 但是会降低 插入 删除 更新的速度
应该被索引的字段
* 需要排序的字段
* 需要比较的字段
* 需要过滤的字段
添加索引的两种方法
# *属性中定义
class User(models.Model):
nickname = models.CharField(maax_length=256,db_index=True)
#*模型的Meta属性类
class User(models.Model):
....
class Meta:
indexes = [
models.Index(fields=['nickname']),
models.Index(fields=['open_id']),
# models.Index(fields=['open_id','nickname'])
# 这个是组合索引
]
模型更新
python manage.py makemigrations
pythonmanage.py migrate
默认的索引规则
django中
主键和外键都默认是索引
关系映射
三种关系
一对一的关系 OneToOneField
一对多的关系 ForegnKey
多对多的关系 ManyToManyField
from django.db import models
class Wife(models.Model):
pass
class Husband(models.Model):
"""
记录删除,对应Wife表,也应该删除
"""
wife = models.OneToOneField(Mother,on_delete=models.CASCADE)
class Mother(models.Model):
pass
class Father(models.Model):
"""
父亲的模型
因为一夫一妻制,所以是一对一的关系
on_delete 级联删除,什么都不做
因为对于孩子来说,父母是不会改的
"""
wife = models.OneToOneField(Mother,on_delete=models.DO_NOTHING)
class YoungerBrother(models.Model):
pass
class ElderBrother(models.Model):
# 一对多的关系
father_id = models.ForeignKey(Father,on_delete=models.DO_NOTHING)
# 多对多的关系
younger_brother = models.ManyToManyField(YoungerBrother)