码迷,mamicode.com
首页 > 编程语言 > 详细

Python - Django - ORM QuerySet 方法补充

时间:2019-08-09 01:18:03      阅读:92      评论:0      收藏:0      [点我收藏+]

标签:integer   sele   image   foreign   批量   model   pytho   部门   关联   

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 表:

技术图片

 

Python - Django - ORM QuerySet 方法补充

标签:integer   sele   image   foreign   批量   model   pytho   部门   关联   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!