2020.4.30 Django增删改查

发布于 2020-04-30  46 次阅读


Table of Contents


sockfd = socket(AF_UNIX,SOCK_STREAM)

  • 【2】 绑定本地套接字文件
    sockfd.bind(ADDR)
  • 【3】 监听,接收客户端连接,消息收发
    listen()-->accept()-->recv(),send()
  • 进程之信号量(信号灯集)

    • 通信原理:对一个公有值,操作它的数量,再根据数量进行一些行为
    • 使用方法:
      • 1.导入Semaphore
      • 2.sem=Semaphore(num) 创建信号量,返回信号量对象
      • 3.sem.acquire() 将信号量减1 当信号量为0时阻塞
        sem.release() 将信号量加1
        sem.get_value() 获取信号量数量
  • 2.灵感代办

    3.学习内容

    • Django Shell 使用

      • 作用:类似linux下的命令行,可以直接操作一些模块
      • 使用方法:
        • python manage.py shell
    • Django 查询数据

      • Django数据操作

        • 都需要 实体对象(model.Model).objects()调用方法
      • all() 返回全部数据

        • 类似select * from table
        • 作用:返回全部的数据对象
        • 返回的是一个 QuerySet容器对象,内部存放的是 实体对象
      • value() 返回指定列的数据对象

        • 类似select column1,column2 from table
        • 作用:返回指定列的数据对象
        • 使用:Entry.objects.value()
        • 返回的是一个 QuerySet容器对象,内部存放的是 实体对象
      • value_list() 返回指定列的数据对象

        • 类似select column1,column2 from table
        • 作用:返回指定列的数据对象
        • 使用:Entry.objects.value_list()
        • 返回的是一个 元组组成形式的查询结果
      • order_by() 返回排序

        • select * from table order by column
        • 作用:将字段排序后返回
        • 使用:Entry.objects.order_by(“-column”)
          • -负号是降序排列
        • 返回的是一个 QuerySet容器对象,内部存放的是 实体对象
      • get()

        • 返回一条指定的数据,
        • 查询结果多余一条数据则抛出,Model.MultipleObjectsReturned异常
        • 查询结果如果没有数据则抛出Model.DoesNotExist异常
      • filter()

        • 类似 select * from table wherd id=1;
        • 作用:对数据库的数据过滤
        • 使用:Entry.object.filter()
          • 可以使用字段查找
        • 返回的是一个 QuerySet容器对象,内部存放的是 实体对象
      • exclude()

        • 类似: not
        • 作用:反选数据
        • 使用:: Entry.objects.exclude(条件)
      • 字段查找(查询谓词)

        • 使用方法:

          • get(column__exact = 1)
          • 含义就是 column 的值等于 1
          • 值一定是等于
        • __exact 等值匹配 (就是等号)
        • __contains 包含指定值
        • __startswith/__endswith : 以 XXX 开始结束
        • __gt , __gte 大于,大于等于
        • __lt,__lte : 小于,小于等于
        • __in :查找是否在指定范围内(元组/字典)
        • __range:查找是否在指定范围内(元组/字典)
      • Django修改数据

        • 修改单条数据

          • 获得实体对象 ,通过get(),
          • 改变实体对象的属性值
          • 调用实体对象的.save()方法
        • 修改多条数据

          • 获得QuerySet对象
          • 执行update()方法
            • 参数是字典形式
            • 字段名 = 新的值
        • 删除数据(单条多条通用)

          • 调用delete()方法
      • Django 聚合函数查询

        • aggregate 聚合函数使用

          • 作用:使用数据库中的聚合函数
          • 用法:Entry.objects.aggregate(结果变量名=聚合函数('列'))
            • 一定要导入:from django.db.models import *
          • 常用聚合函数(聚合函数一定要大写)
            • Sum, Avg, Count, Max, Min
          • 返回结果:
            • 由 结果变量名和值组成的字典,格式为:
            • `{"结果变量名": 值}
      • QueryDict对象常用方法

        • QueryDict.lists()
          • 类似items(),只是它将其中的每个键的值作为列表放在一起。
        • QueryDict.dict()
          • 将QueryDict转换为Python的字典数据类型,并返回该字典。
          • 重复的值,取最后一个
        • QueryDict.getlist(key, default=None)
          • 返回键对应的值列表。 如果该键不存在并且未提供默认值,则返回一个空列表。
        • QueryDict.update(other_dict)
          • 用新的QueryDict或字典更新当前QueryDict。

    4.扩展延伸知识

    • django models删除重建表

      • 需要在数据库中清空 django_migrations
      • 需要在项目app中删除 000*.py文件
      • 重新执行 makemigrations 和 migrate
    • href链接中,/的作用

      • / 代表是绝对路径,从项目根目录算起
      • 不加 代表是相对路径,从当前目录开始算起
    • Django数据库迁移时候让选择是否为null

      • 1.选择选项1,手动给一个值
      • 2.选择暂时忽略
      • 3.在model中添加null或者default选项
    • python 字典方法(item(),keys(),value())

      • item() 返回键和值
      • keys()返回键
      • value()返回值

    5.知识内容个人梳理

    6.今天都复习了之前的什么内容