定义
吧类和数据表进行映射
通过操作类,对象属性来映射操作数据库表格中的数据进行crud
步骤
- 配置DB连接信息
- 创建DB和用户(因为如果是root用户的话,假设在云服务器上会不可访问,需要额外设置)
- 配置DB
- 安装mysqlclient(安装mysqlclient可能会遇到c++14等问题,当pip install不可用时,考虑使用pycharm自带的包管理器进行下载安装)
- 在models.py中定义模型类
-
配置DB连接
settings.py下
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'demo',
'USER': "root",
"PASSWORD": "123456",
"PORT": 3306,
"HOST": "localhost"
}
需要注意的事port必须为int型。只为示例,根据自己需要进行修改、
编写实体类(模型类)
models下新建类,需要继承model.Model ```python from django.db import models
Create your models here.
class Person(models.Model): ‘’’
创建 person类
每一个应用下的数据库模型类需要在当前应用下的models。py文件中定义
一个数据库模型类相当于一个DB表。
定义的一个类属性就相当于表中的一个字段
默认情况下会自动生成一个主键id列。且自增
一个数据库模型类需要继承Model或者Model的子类
以appname_modelclassName为表名
'''
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
class Meta:
db_table='tb_person' # 设置映射生成的DB表名
verbose_name="人"
verbose_name_plural="人" # 设置复数形式的提示名
def __str__(self):
return self.name # 作用是在admin后台管理站点直接显示对象信息
字段解释
- verbos_name 用于设置更人性化的字段名
- help_text 主要用于api文档中的中文名称
- unique 设置当前字段是否唯一,默认为false
- blank 设置为True 与null 设置为True的区别
- null 设置db中该字段允许为空 blank 设置的事前端传值到后台是否允许为空
-
迁移
python manage.py makemigrations
python manage.py migrateorm操作
建议使用交互式变成快速进行联系
pip install ipython
python manage.py shell -i ipython 进入交互式变成环境新增
方法1 obj=models(_params) obj.save()
方法2 models.objects.create(paramas=values)_查询
model 为模型类
- 简单查询
- model.objects.all() 查询所有结果,返回为一个结果集
- model.objects.get(id=)查询单个结果,参数为主键
- filter 查询,获取的是查询到的结果集,列表,列表内为查询结果对象
- 模糊查询
- 参数中设置 filed__contains(模糊查询参数)
- field__icontains(模糊查询并且忽略大小写)
- field__startwith(以什么字符开始)
- 取反查询
- model.objects.exclude(字段名=值)
- 关联查询
- model.objects.filter(关联model字段名) 进一步关联就在model字段名__字段名进行关联
- 比较查询
- model.objects.filter(id__gt=2) gt 大于 gte大于等于 lt 小于 lte小于等于
- 逻辑关系
- 多条件查询 给filter指定多个条件,条件间是 与的关系
- model.objects.filter(leader=’’,name__contains=””)
- 或的关系,需要使用django.db.models.Q 变量 model.objects.filter(Q(leader=’’) | Q(name__contains=””))
更新
先要获取到要修改的模型类然后进行修改
进行保存
使用filter或者get来或得到model对象
model.字段 =”修改的值”model.save()删除
首先先查询到要删除的模型对象,执行删除方法排序操作
获取到查询结果集然后调用 order_by(“根据排序的字段”)
默认从小到大,字段前加-号为从大到小查询集的操作
查询集的操作 .first() | .last() 第一个,最后一个结果
查询集是对数据库操作的一种优化
查询集相当于一个包含查询结果对象的列表,支持列表中的大多数操作
支持索引取值,正向,遍历,会缓存结果
惰性查询(自己调查
查询集支持链式操作小工具推荐
httppie 可以说是精简版的postman,对调试接口api有奇效。
- 简单查询