Django 之 ORM 查询使有

一、在Django项目上运行python文件查询数据库

import os

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

    from ormtest import models

    #查询所有作者
    all_author = models.Author.objects.all()
    print(all_author)

    #get查询某个人,当值不存在时会报错
    person = models.Author.objects.get(id=7)
    print(person)

    print("filter".center(60,"*"))
    #filter返回数据为一个列表,当值不存在时,不会报错,返回一个空的列表
    person = models.Author.objects.filter(id=7)
    print(person)
    print(person[0])

    #exclude 返回id不等于1的所有值,排队法
    print("exclude".center(60,"*"))
    person = models.Author.objects.exclude(id=1)
    print(person)

    print("values返回值".center(60,"*"))
    person = models.Author.objects.values()
    print(person)

    print("orderby按照指定的字段排序")
    person = models.Author.objects.all().order_by("id")
    print(person)

    print("count统计匹配的数量".center(60,"*"))
    count = models.Author.objects.all().count()
    print(count)

    print("first返回第一行数据".center(60,"*"))
    person = models.Author.objects.all().first()
    print(person)

    print("last返回最后一行数据".center(60, "*"))
    person = models.Author.objects.all().last()
    print(person)

    print("查询id大于4,小于6的值".center(50,"*"))
    person = models.Author.objects.filter(id__gt=5,id__lt=7)
    print(person)

    print("in查询包括列表中的数或not_in".center(50,"*"))
    person = models.Author.objects.filter(id__in=[3,5,7])
    print(person)

    print("contains包含某些值".center(50,"*"))
    person = models.Author.objects.filter(name__contains="周")
    print(person)

    print("range相当于sql语句中的between and 5<7".center(50,"*"))
    person = models.Author.objects.filter(id__range=[5,7])
    print(person)

程序执行结果:

<QuerySet [<Author: author_name:小白>, <Author: author_name:小周>, <Author: author_name:小红>, <Author: author_name:小绿>, <Author: author_name:小光>]>
author_name:小光
***************************filter***************************
<QuerySet [<Author: author_name:小光>]>
author_name:小光
**************************exclude***************************
<QuerySet [<Author: author_name:小白>, <Author: author_name:小周>, <Author: author_name:小红>, <Author: author_name:小绿>, <Author: author_name:小光>]>
*************************values返回值**************************
<QuerySet [{‘id‘: 3, ‘name‘: ‘小白‘}, {‘id‘: 4, ‘name‘: ‘小周‘}, {‘id‘: 5, ‘name‘: ‘小红‘}, {‘id‘: 6, ‘name‘: ‘小绿‘}, {‘id‘: 7, ‘name‘: ‘小光‘}]>
orderby按照指定的字段排序
<QuerySet [<Author: author_name:小白>, <Author: author_name:小周>, <Author: author_name:小红>, <Author: author_name:小绿>, <Author: author_name:小光>]>
************************count统计匹配的数量************************
5
************************first返回第一行数据************************
author_name:小白
************************last返回最后一行数据************************
author_name:小光
******************查询id大于4,小于6的值*******************
<QuerySet [<Author: author_name:小绿>]>
****************in查询包括列表中的数或not_in****************
<QuerySet [<Author: author_name:小白>, <Author: author_name:小红>, <Author: author_name:小光>]>
******************contains包含某些值*******************
<QuerySet [<Author: author_name:小周>]>
**********range相当于sql语句中的between and 5<7**********
<QuerySet [<Author: author_name:小红>, <Author: author_name:小绿>, <Author: author_name:小光>]>

models.py文件代码

from django.db import models

# Create your models here.

class Publisher(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=64,null=False,unique=True)

    def __str__(self):
        return "publisher_name:{}".format(self.name)

class Book(models.Model):
    id = models.AutoField(primary_key=True)
    title = models.CharField(max_length=128,null=False)
    publisher = models.ForeignKey(to=Publisher)

    def __str__(self):
        return "book_title:{}".format(self.title)

class Author(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=16,null=False)
    book = models.ManyToManyField(to="Book")

    def __str__(self):
        return "author_name:{}".format(self.name)

原文地址:https://blog.51cto.com/12965094/2393679

时间: 2024-11-01 12:29:12

Django 之 ORM 查询使有的相关文章

Django 的 orm 查询

一.模型关系表 1. 一对一 Author-AuthorDetail 关联字段可以在任意表下,但必须唯一约束.(unique约束) ad_id(unique约束) ad = models.oneToOneField("AuthorDetail",null=True,on_delete=models.CASCADE) 相当于 authors = models.ForgeinKey(to="Author",on_delete=models.CASCADE,unique)

django优化--ORM查询

ORM提供了两个方法用来优化查询效率 1. select_related 有两张表:表结构如下: class Scheme(models.Model): """ 套餐类 """ name = models.CharField(max_length=200, verbose_name="套餐名") coordinate = models.CharField(max_length=50, verbose_name="坐标

django知识之ORM查询

1. ORM字段 1. AutoField(primary_key=True)      -------->自增且主键 2. CharField(max_length=16)         --------->varchar类型(char类型可以自定义 类改写db_type) 3. IntegerField(null=True) --> 最大10位    -------->int类型(最大10位所以手机号码一般用char或者varchar类型) 4. DateField(auto

django指定mysql数据库 ORM查询

django原生自带数据库,不过自带的数据库是sqlite 这次使用的orm框架操作数据库 这时候你就需要换上你想用的数据库比如大众化的mysql 但是你还是首先要先安装pymysql的驱动 pip install PyMySQL 在Django的工程同名子目录的__init__.py文件中添加如下语句 from pymysql import install_as_MySQLdb install_as_MySQLdb()django 在python2.7一直使用的是db操作数据库由于django

Django—— ORM查询(sql优化)优化了解,Django(元信息)元类建索引

Django(元信息)元类建索引 索引:索引的一个主要目的就是加快检索表中数据,索引是经过某种算法优化过的,因而查找次数要少的多.可见,索引是用来定位的. class Book(models.Model) name = models.CharField(max_length=64) class Meta: # 自定义表名 db_table = 'table_name' # 联合索引: 索引的一个主要目的就是加快检索表中数据 index_together = ('tag1', 'tag2') #

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单表查询、orm多表查询、聚合查询、分组查询、F查询、 Q查询、事务、Django ORM执行原生SQL)

12.329 orm单表查询 import os if __name__ == '__main__': # 指定当前py脚本需要加载的Django项目配置信息 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "orm_demo.settings") import django django.setup() # 启动Django项目 from app01 import models #返回QuerySet对象的方法: r

django模型层 、 ORM查询

模型层 ORM查询 单表查询 前期准备工作需求: 如何只单独测试django中的某一个py文件 如何书写测试脚本 如何使用: 在任意一个py文件中书写以下代码 应用下的tests 或者自己新建一个 import os if __name__ == "__main__": os.environ.setdefault("DJANGO_SETTINGS_MODULE", "day53.settings") import django django.se

Django的ORM表查询

目录 Django的ORM表查询 单表查询 多表查询 聚合查询 分组查询 F与Q查询 Django的ORM表查询 先创建一个数据库,做前期准备 为了方便测试,不再进行urls对应关系和views的书写,直接测试的单个文件 那么如何只单独测试Django中的某个py文件,有以下方法 在任意一个py文件中书写以下代码 可以在应用app的目录下的tests.py中书写 也可以自己建立一个py文件书写 import os if __name__ == "__main__": os.enviro