Django ORM は Python の古典的な ORM フレームワークであり、Django Web フレームワークの一部であり、データベース操作に便利な方法を提供します。 ORM は Object Relational Mapping の略で、リレーショナル データベースのテーブルを Python のクラスにマッピングできるため、開発プロセスが簡素化され、開発効率が向上します。この記事ではDjango ORMについて詳しく紹介します。
I. ORM の基本概念
ORM は、オブジェクトをリレーショナル データベースにマッピングする技術であり、主に次の 3 つの機能を実装します。データベースは Python のクラスにマッピングされます
シンプルで使いやすい: Django ORM の API は次のとおりです。非常にシンプルで、マスターして使用するのも簡単です。
Django のインストール
pip install Django
モデルを定義する
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()
models
モジュールを使用して、Book データ テーブルという名前のクラスを定義します。これには、
title、
author、
pub_date の 3 つのフィールドが含まれます。
max_length は文字列型フィールドの最大長を指定するために使用され、
DateTimeField は時間型フィールドを格納するために使用されます。
データベース テーブルの作成
python manage.py makemigrations python manage.py migrate
Book
テーブルが作成され、テーブル構造は定義されたモデルクラス。CRUD 操作
from datetime import datetime book = Book(title='Django ORM Tutorial', author='Terry', pub_date=datetime.now()) book.save()
book = Book.objects.get(id=1) book.title = 'Updated Title' book.save()
book = Book.objects.get(id=1) book.delete()
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 は、テーブル結合クエリの 2 つの方法をサポートしています: 1 つは
ForeignKeyフィールドを介して関連付けることで、もう 1 つは相関関係を実行するためのクエリを自己定義します。
# 通过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 では、
オブジェクトを使用して複数のクエリ条件を組み合わせ、より複雑なクエリを実現できます。以下はサンプル コードです:
from django.db.models import Q books = Book.objects.filter(Q(title__contains='Django') | Q(author__contains='Guido')) # 以上代码查询了标题中包含'Django'或作者名中包含'Guido'的所有图书
c. 集計操作集計操作は、データをグループ化するか統計を要約するために使用されます。 Django ORM でサポートされている集計操作には、
、
Max、Min
、Count
、Sum
などが含まれます。サンプル コードは次のとおりです: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:python;toolbar:false;'>from django.db.models import Avg
avg_pub_date = Book.objects.all().aggregate(Avg('pub_date'))
# 以上代码计算了所有图书的发布时间的平均值</pre><div class="contentsignin">ログイン後にコピー</div></div>V. 概要<code>
この記事では、Python の ORM フレームワーク Django ORM について詳しく説明します。 Django ORM は、使いやすく、機能が豊富で、スケーラブルな ORM フレームワークであり、開発者が迅速な開発とより効率的なデータベース操作を実現できるように支援します。基本的な CRUD 操作に加えて、Django ORM は、テーブル結合クエリ、クエリ条件の組み合わせ、集計操作など、より多くのデータ操作のニーズを満たすことができるいくつかの高度なクエリ操作もサポートしています。
以上がPythonのORMフレームワークであるDjango ORMの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。