Django Model Querying: 对数据库进行查询

2023年 8月 12日 41.3k 0

Django 的 Model Querying 提供了一系列方法,可以方便地对数据库进行查询。以下是一些常用的方法:

  • all():查询所有记录。
  • from myapp.models import MyModel

    all_records = MyModel.objects.all()

  • filter():根据条件查询记录,返回 QuerySet 对象。
  • from myapp.models import MyModel

    filtered_records = MyModel.objects.filter(name="pidancode.com")

  • exclude():排除符合条件的记录,返回 QuerySet 对象。
  • from myapp.models import MyModel

    excluded_records = MyModel.objects.exclude(name="pidancode.com")

  • order_by():按照指定字段排序,默认为升序。
  • from myapp.models import MyModel

    ordered_records = MyModel.objects.order_by("-age")

  • values():只查询指定字段的值,返回 QuerySet 对象。
  • from myapp.models import MyModel

    values_records = MyModel.objects.values("name", "age")

  • distinct():去重查询,返回 QuerySet 对象。
  • from myapp.models import MyModel

    distinct_records = MyModel.objects.distinct("name")

    代码演示:

    假设我们有一个简单的模型,如下所示:

    from django.db import models

    class MyModel(models.Model):
    name = models.CharField(max_length=50)
    age = models.IntegerField()
    email = models.CharField(max_length=50)

    def __str__(self):
    return self.name

    我们向 MyModel 中添加了一些数据:

    MyModel.objects.create(name="pidancode.com", age=18, email="contact@pidancode.com")
    MyModel.objects.create(name="皮蛋编程", age=22, email="pidan@pianochuan.com")
    MyModel.objects.create(name="pidancode.com", age=20, email="info@pidancode.com")

    现在,我们可以使用以上方法对数据库进行查询:

    # 查询所有记录
    all_records = MyModel.objects.all()

    # 根据条件查询记录
    filtered_records = MyModel.objects.filter(name="pidancode.com")

    # 排除符合条件的记录
    excluded_records = MyModel.objects.exclude(name="pidancode.com")

    # 按照指定字段排序
    ordered_records = MyModel.objects.order_by("-age")

    # 只查询指定字段的值
    values_records = MyModel.objects.values("name", "age")

    # 去重查询
    distinct_records = MyModel.objects.distinct("name")

    以上方法会返回 QuerySet 对象,可以使用循环或索引进行访问。例如:

    # 遍历 QuerySet
    for record in filtered_records:
    print(record.name, record.age, record.email)

    # 访问 QuerySet 中的第一条记录
    first_record = filtered_records[0]
    print(first_record.name, first_record.age, first_record.email)

    相关文章

    Oracle如何使用授予和撤销权限的语法和示例
    Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
    下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
    社区版oceanbase安装
    Oracle 导出CSV工具-sqluldr2
    ETL数据集成丨快速将MySQL数据迁移至Doris数据库

    发布评论