定义

吧类和数据表进行映射
通过操作类,对象属性来映射操作数据库表格中的数据进行crud

步骤

  • 配置DB连接信息
  • 创建DB和用户(因为如果是root用户的话,假设在云服务器上会不可访问,需要额外设置)
  • 配置DB
  • 安装mysqlclient(安装mysqlclient可能会遇到c++14等问题,当pip install不可用时,考虑使用pycharm自带的包管理器进行下载安装)
  • 在models.py中定义模型类
  • 进行迁移

    配置DB连接

    settings.py下

    1. DATABASES = {
    2. 'default': {
    3. 'ENGINE': 'django.db.backends.mysql',
    4. 'NAME': 'demo',
    5. 'USER': "root",
    6. "PASSWORD": "123456",
    7. "PORT": 3306,
    8. "HOST": "localhost"
    9. }
  • 需要注意的事port必须为int型。只为示例,根据自己需要进行修改、

    编写实体类(模型类)

    models下新建类,需要继承model.Model ```python from django.db import models

Create your models here.

class Person(models.Model): ‘’’

  1. 创建 person
  2. 每一个应用下的数据库模型类需要在当前应用下的modelspy文件中定义
  3. 一个数据库模型类相当于一个DB表。
  4. 定义的一个类属性就相当于表中的一个字段
  5. 默认情况下会自动生成一个主键id列。且自增
  6. 一个数据库模型类需要继承Model或者Model的子类
  7. appname_modelclassName为表名
  8. '''
  9. first_name = models.CharField(max_length=30)
  10. last_name = models.CharField(max_length=30)
  11. class Meta:
  12. db_table='tb_person' # 设置映射生成的DB表名
  13. verbose_name="人"
  14. verbose_name_plural="人" # 设置复数形式的提示名
  15. def __str__(self):
  16. return self.name # 作用是在admin后台管理站点直接显示对象信息

```

字段解释

  • verbos_name 用于设置更人性化的字段名
  • help_text 主要用于api文档中的中文名称
  • unique 设置当前字段是否唯一,默认为false
  • blank 设置为True 与null 设置为True的区别
    • null 设置db中该字段允许为空 blank 设置的事前端传值到后台是否允许为空
  • filed 在此不做详细解释,翻看原码

    迁移

    python manage.py makemigrations
    python manage.py migrate

    orm操作

    建议使用交互式变成快速进行联系
    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有奇效。