Python - Django - ORM QuerySet 方法补充

models.py:

from django.db import models

class Employee2(models.Model):
    name = models.CharField(max_length=16)
    age = models.IntegerField()
    salary = models.IntegerField()
    province = models.CharField(max_length=32)
    dept = models.ForeignKey(to="Dept")

    def __str__(self):
        return self.name

    class Meta:
        db_table = "employee2"

class Dept(models.Model):
    name = models.CharField(max_length=16, unique=True)

    def __str__(self):
        return self.name

    class Meta:
        db_table = "dept2"

employee2 表:

dept2 表:

select_related:

select_related 将表之间进行 join 连表操作,一次性获取关联的数据

select_related 主要针一对一和多对一关系进行优化

select_related 使用 SQL 的 join 语句进行优化,通过减少 SQL 查询的次数来进行优化、提高性能

orm.py:

import os

if __name__ == ‘__main__‘:
    # 加载 Django 项目的配置信息
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite2.settings")
    # 导入 Django,并启动 Django 项目
    import django
    django.setup()

    from app04 import models

    ret = models.Employee2.objects.select_related().values("name", "dept__name")
    print(ret)

运行结果:

也可以用:

ret = models.Employee2.objects.values("name", "dept__name")
print(ret)

进行查询

bulk_create:

bulk_create(objs, batch_size=None)
批量插入 objs,batch_size 为一次插入的个数

orm.py:

import os

if __name__ == ‘__main__‘:
    # 加载 Django 项目的配置信息
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite2.settings")
    # 导入 Django,并启动 Django 项目
    import django
    django.setup()

    from app04 import models

    objs = [
        models.Dept(name="A 部门"),
        models.Dept(name="B 部门"),
        models.Dept(name="C 部门"),
        models.Dept(name="D 部门"),
        models.Dept(name="E 部门"),
        models.Dept(name="F 部门"),
        models.Dept(name="G 部门"),
        models.Dept(name="H 部门"),
        models.Dept(name="I 部门"),
        models.Dept(name="J 部门"),
    ]
    models.Dept.objects.bulk_create(objs, 2)

运行结果,dept2 表:

原文地址:https://www.cnblogs.com/sch01ar/p/11324724.html

时间: 2024-11-07 09:44:21

Python - Django - ORM QuerySet 方法补充的相关文章

Python - Django - ORM 查询方法

models.py: from django.db import models class Human(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=32) age = models.IntegerField() birthday = models.DateField(auto_now_add=True) 在数据库中添加几条数据 在 Python 脚本中调用 Dj

Python - Django - ORM 分组查询补充

单表查询: models.py: from django.db import models class Employee(models.Model): name = models.CharField(max_length=16) age = models.IntegerField() salary = models.IntegerField() province = models.CharField(max_length=32) dept = models.CharField(max_lengt

django orm查询方法详解

目录 1.1.1 生成查询 1.1.2 创建对象 1.1.3 保存修改的对象 1.1.4 保存 ForeignKey 和 ManyToManyField 字段 1.1.5 检索对象 1.1.6 检索所有的对象 1.1.7 过滤检索特定对象 1.1.8 链接过滤 1.1.9 过滤结果集是唯一 1.2.1 结果集是延迟的 1.2.2 其他的QuerySet方法 1.2.3 限制 QuerySets 1.2.4 字段查找 1.2.5 跨关系查询 1.2.6 过滤器可参考模型字段 1.2.7 缓存查询集

Django ORM queryset object 解释(子查询和join连表查询的结果)

#下面两种是基于QuerySet查询 也就是说SQL中用的jion连表的方式查询books = models.UserInfo.objects.all() print(type(books)) ---> <class 'django.db.models.query.QuerySet'> 查询出来是一个对象QuerySey 取值 print(books.values()) books = models.UserInfo.objects.filter()print(type(books))

Django orm Q查询补充

Q类的用法 from django.db.models import Q q = Q() q.children.append(("username", "lyj")) q.children.append(("age", "18")) #如果不设置,默认是 and q.connector = "or" res = User.objects.filter(q) 原文地址:https://www.cnblogs.

Python - Django - ORM 实例(二)

在 app01/models.py 中添加 Book 类对象表 from django.db import models # Create your models here. # 出版社 class Publisher(models.Model): id = models.AutoField(primary_key=True) # 自增的 ID 主键 # 创建一个 varchar(64) 的唯一的不为空的字段 name = models.CharField(max_length=64, null

python Django教程 之 模型(数据库)、自定义Field、数据表更改、QuerySet API

python  Django教程  之 模型(数据库).自定义Field.数据表更改.QuerySet API 一.Django 模型(数据库) Django 模型是与数据库相关的,与数据库相关的代码一般写在 models.py 中,Django 支持 sqlite3, MySQL, PostgreSQL等数据库,只需要在settings.py中配置即可,不用更改models.py中的代码,丰富的API极大的方便了使用. 本节的代码:(Django 1.6, Python 2.7 测试环境) 大

Python之路【第二十一篇】Django ORM详解

ORM回顾 关系对象映射(Object Relational Mapping,简称ORM). django中遵循 Code Frist 的原则,即:根据代码中定义的类来自动生成数据库表. 对于ORM框架里: 我们写的类表示数据库的表 如果根据这个类创建的对象是数据库表里的一行数据 对象.id 对象.value 是每一行里的数据 http://www.cnblogs.com/luotianshuai/p/5301343.html 梳理 首先在理解ORM的时候,我们可以把一对多.多对多 分为正向和反

django orm 分页(paginator)取数据出现警告manage.py:1: UnorderedObjectListWarning: Pagination may yield inconsistent results with an unordered object_list: &lt;class &#39;sign.models.Guest&#39;&gt; QuerySet.

使用django的orm做分页(Paginator)时出现了下面的警告 In [19]: p=Paginator(guest_list,2) manage.py:1: UnorderedObjectListWarning: Pagination may yield inconsistent results with an unordered object_list: <class 'sign.models.Guest'> QuerySet. #!/usr/bin/env python 网上搜的