• django ORM练习


    1. 分组
    ORM中values或者values_list 里面写什么字段,就相当于select 什么字段

    ret = models.Employee.objects.all().values("dept", "age")
    相当于:
    SELECT `employee`.`dept`, `employee`.`age` FROM `employee` LIMIT 21; args=()


    2. ORM中 annotate 前面是什么就按照什么分组!
    from django.db.models import Avg
    ret = models.Employee.objects.values("province").annotate(a=Avg("salary")).values("province", "a")
    相当于:
    SELECT `employee`.`province`, AVG(`employee`.`salary`) AS `a` FROM `employee` GROUP BY `employee`.`province` ORDER BY NULL LIMIT 21; args=()

    3. extra --> 在执行ORM查询的时候执行额外的SQL语句
    # 查询person表,判断每个人的工资是否大于2000
    ret = models.Person.objects.all().extra(
    select={"gt": "salary > 2000"}
    )
    相当于:
    SELECT (salary > 2000) AS `gt`, `person`.`id`, `person`.`name`, `person`.`salary`, `person`.`dept_id` FROM `person` LIMIT 21; args=()


    4. 直接执行原生的SQL语句,类似pymysql的用法
    from django.db import connection
    cursor = connection.cursor() # 获取光标,等待执行SQL语句
    cursor.execute("""SELECT * from person where id = %s""", [1])
    row = cursor.fetchone()
    print(row)

  • 相关阅读:
    vue-router路由知识补充
    vue-router路由模式详解
    Linq To Sql的各种查询
    消息队列系列(四):Rabbitmq常用命令行
    产品发布之我见
    利用LogParser分析IIS日志
    SqlServer_删除重复行只保留一条记录
    SqlServer_合并多个递归查询数据(CTE)
    rabbitmq_坑
    mongodb_性能监控
  • 原文地址:https://www.cnblogs.com/louzi/p/9373213.html
Copyright © 2020-2023  润新知