2020.4.30 Django增删改查

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


1.复习内容

  • 进程之管道通信(Pipe)

    • 作用:进程之间用来通信,有点像SOCKET
    • 使用方法:
      • 1.导入包 Pipe
      • 2.生成对象 fd1,fd2 = Pipe() 默认为duplex=False
        • 如果是双向两端都可以读写
          • 两端都可以读写是两个进程之间
            • 一个进程可以用fd1 接收,发送,
            • 另一个用fd2 发送,接收
        • 如果是单向,fd1读,fd2写
      • 3.recv是接收 会阻塞
      • 4.send是发送数据
  • 进程之消息队列通信

    • 作用:在内存中建立消息队列模型,一个放入消息,一个拿走消息
    • 使用方法:
      • 1.导入Queue
      • 2.生成对象
        • q = Queue(maxsize=10) 是消息数量 ,0是默认
        • q.put(data,[block,timeout]) block是设置阻塞(True/False)
        • value = q.get([block,timeout]) block是设置阻塞(True/False)
      • 3.结合方法判断使用
        • q.full() 判断队列是否为满
        • q.empty() 判断队列是否为空
        • q.qsize() 获取队列中消息个数
        • q.close() 关闭队列
  • 进程之共享内存通信

    • 作用:在内存中开辟一块空间,两个进程都可以使用,每次使用都被覆盖
    • 使用方法:
      • 1.导入Value,Array
      • 2.创建对象Value(ctype,date),Array(ctype,data)//返回值时候共享内存对象obj
        • Value是单个值
        • Array是一个集合类型 Array(“c”,”this is my”)
      • 3.读取属性 : obj.value
  • 进程之本地套接字通信

    • 使用SOCKET在本地通信
    • 使用方法:
      • 本地套接字:ADDR=‘/tmp/msg.sock’
      • 【1】 创建本地套接字
        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.今天都复习了之前的什么内容


Ares个人进阶之路