Django ORM은 Python의 고전적인 ORM 프레임워크이며 Django 웹 프레임워크의 일부이며 데이터베이스 작업을 위한 편리한 방법을 제공합니다. ORM은 관계형 데이터베이스의 테이블을 Python의 클래스에 매핑하여 개발 프로세스를 단순화하고 개발 효율성을 향상시킬 수 있는 개체 관계형 매핑(Object Relational Mapping)을 나타냅니다. 이번 글에서는 Django ORM을 자세히 소개하겠습니다.
I. ORM의 기본 개념
ORM은 객체를 관계형 데이터베이스에 매핑하는 기술입니다. 주로 다음 세 가지 기능을 구현합니다.
ORM의 가장 큰 장점은 반복적인 SQL 문을 작성하는 개발자의 시간과 노력을 줄여주고, SQL 문.
II. Django ORM의 장점
다른 ORM 프레임워크와 비교하여 Django ORM은 다음과 같은 장점이 있습니다.
III.Django ORM 사용 방법
먼저 Django를 설치해야 하며, pip를 사용하여 설치할 수 있습니다.
pip install Django
Django ORM을 사용할 때 다음을 수행해야 합니다. 먼저 모델 클래스를 정의합니다. 모델 클래스 데이터 테이블의 필드와 테이블 이름, 인덱스 등과 같은 데이터 테이블의 기타 메타데이터를 정의하는 Python의 클래스입니다. 다음은 간단한 모델 클래스 정의입니다.
from django.db import models class Book(models.Model): title = models.CharField(max_length=100) author = models.CharField(max_length=50) pub_date = models.DateTimeField()
위 코드에서는 Django ORM에서 제공하는 models
모듈을 사용하여 Book
이라는 데이터 테이블을 정의합니다. 세 개의 필드: title
, author
, pub_date
. max_length
는 문자열 유형 필드의 최대 길이를 지정하는 데 사용되며, DateTimeField
는 시간 유형 필드를 저장하는 데 사용됩니다. models
模块来定义了一个名为Book
的数据表,其中包含了三个字段:title
、author
、pub_date
。max_length
用于指定字符串类型字段的最大长度,DateTimeField
用于存储时间类型字段。
在完成模型类的定义后,需要通过迁移生成数据库表。Django ORM提供了自动迁移功能,只需运行以下命令即可生成数据表:
python manage.py makemigrations python manage.py migrate
以上命令创建了Book
表,表结构与定义的模型类对应。
a. 创建记录
通过模型类可以轻松地向数据表中添加新的记录,在以下代码中,我们创建了一条新的记录并将其保存到数据库中:
from datetime import datetime book = Book(title='Django ORM Tutorial', author='Terry', pub_date=datetime.now()) book.save()
b. 更新记录
使用Django ORM更新记录非常简单,只需先查询记录,然后将其更新并保存即可。以下是一个简单的更新代码示例:
book = Book.objects.get(id=1) book.title = 'Updated Title' book.save()
c. 删除记录
删除记录也非常简单,只需执行以下代码即可:
book = Book.objects.get(id=1) book.delete()
d. 查询记录
在Django ORM中,可以使用objects
对象进行查询,以下是一个简单的查询示例代码:
books = Book.objects.all() for book in books: print(book.title, book.author, book.pub_date)
该代码将输出Book
表中所有记录的title
、author
和pub_date
字段。
IV. 高级查询操作
除了基本的CRUD操作外,Django ORM还支持一些高级查询操作,如连表查询、查询条件组合、聚合操作等,以下是一些示例代码。
a. 连表查询
Django ORM中支持两种方式的连表查询:一种是通过ForeignKey
字段进行关联,另一种是通过自定义查询进行关联。
# 通过ForeignKey字段关联 class Author(models.Model): name = models.CharField(max_length=50) class Book(models.Model): title = models.CharField(max_length=100) author = models.ForeignKey(Author, on_delete=models.CASCADE) books = Book.objects.filter(author__name='Leo Tolstoy') # 以上代码查询了作者名为'Leo Tolstoy'的所有图书 # 通过自定义查询进行关联 books = Book.objects.raw('SELECT * FROM app_book INNER JOIN app_author ON app_book.author_id = app_author.id WHERE app_author.name = %s', ['Leo Tolstoy'])
b. 查询条件组合
在Django ORM中,可以使用Q
对象将多个查询条件进行组合,以实现更加复杂的查询。以下是一个示例代码:
from django.db.models import Q books = Book.objects.filter(Q(title__contains='Django') | Q(author__contains='Guido')) # 以上代码查询了标题中包含'Django'或作者名中包含'Guido'的所有图书
c. 聚合操作
聚合操作用于对数据进行分组或汇总统计。Django ORM中支持的聚合操作包括:Avg
、Max
、Min
、Count
、Sum
모델 클래스 정의가 완료되면 마이그레이션을 통해 데이터베이스 테이블을 생성해야 합니다. Django ORM은 자동 마이그레이션 기능을 제공합니다. 다음 명령을 실행하면 데이터 테이블이 생성됩니다.
from django.db.models import Avg avg_pub_date = Book.objects.all().aggregate(Avg('pub_date')) # 以上代码计算了所有图书的发布时间的平均值
Book
테이블을 생성하고 테이블 구조는 정의된 모델 클래스에 해당합니다. 🎜를 사용할 수 있습니다. object
개체를 쿼리할 경우 다음은 간단한 쿼리 예제 코드입니다. 🎜rrreee🎜이 코드는 Book
에 있는 모든 기록의 제목
, 를 출력합니다. > 테이블 >author
및 pub_date
필드. 🎜🎜IV. 고급 쿼리 작업🎜🎜Django ORM은 기본 CRUD 작업 외에도 조인 테이블 쿼리, 쿼리 조건 조합, 집계 작업 등과 같은 일부 고급 쿼리 작업도 지원합니다. 다음은 몇 가지 샘플 코드입니다. 🎜🎜a. 조인 테이블 쿼리🎜🎜Django ORM은 두 가지 조인 테이블 쿼리 방법을 지원합니다. 하나는 ForeignKey
필드를 통해 연결하는 것이고, 다른 하나는 사용자 지정 쿼리를 통해 연결하는 것입니다. 🎜rrreee🎜b. 쿼리 조건 조합🎜🎜Django ORM에서는 Q
개체를 사용하여 여러 쿼리 조건을 결합하여 더 복잡한 쿼리를 수행할 수 있습니다. 다음은 샘플 코드입니다. 🎜rrreee🎜c. 집계 작업 🎜🎜 집계 작업은 데이터를 그룹화하거나 통계를 요약하는 데 사용됩니다. Django ORM에서 지원되는 집계 작업에는 Avg
, Max
, Min
, Count
, Sum
이 포함됩니다. 코드>등 다음은 샘플 코드입니다. 🎜rrreee🎜V. 요약🎜🎜이 문서에서는 Python의 ORM 프레임워크 Django ORM에 대해 자세히 소개합니다. Django ORM은 개발자가 신속한 개발과 보다 효율적인 데이터베이스 운영을 달성하는 데 도움이 되는 사용하기 쉽고 기능이 풍부하며 확장 가능한 ORM 프레임워크입니다. 기본 CRUD 작업 외에도 Django ORM은 조인 테이블 쿼리, 쿼리 조건 조합, 집계 작업 등과 같은 일부 고급 쿼리 작업을 지원하여 더 많은 데이터 작업의 요구 사항을 충족할 수 있습니다. 🎜위 내용은 Python의 ORM 프레임워크인 Django ORM에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!