ホームページ > バックエンド開発 > Python チュートリアル > PythonのORMフレームワークであるDjango ORMの詳細説明

PythonのORMフレームワークであるDjango ORMの詳細説明

王林
リリース: 2023-06-11 09:12:07
オリジナル
2828 人が閲覧しました

Django ORM は Python の古典的な ORM フレームワークであり、Django Web フレームワークの一部であり、データベース操作に便利な方法を提供します。 ORM は Object Relational Mapping の略で、リレーショナル データベースのテーブルを Python のクラスにマッピングできるため、開発プロセスが簡素化され、開発効率が向上します。この記事ではDjango ORMについて詳しく紹介します。

I. ORM の基本概念

ORM は、オブジェクトをリレーショナル データベースにマッピングする技術であり、主に次の 3 つの機能を実装します。データベースは Python のクラスにマッピングされます

    データベースのフィールドは Python の属性にマッピングされます
  • データベースのレコードは Python のインスタンスにマッピングされます
  • メインORM の利点は、繰り返し SQL ステートメントを作成する開発者の時間と作業負荷を軽減できること、また SQL ステートメントの調整や変更によって発生するエラーを削減できることです。
II. Django ORM の利点

他の ORM フレームワークと比較して、Django ORM には次の利点があります:

シンプルで使いやすい: Django ORM の API は次のとおりです。非常にシンプルで、マスターして使用するのも簡単です。

    豊富な API: Django ORM は、追加、削除、変更、クエリなどの一般的なデータベース操作を完了するための豊富な API を提供します。また、高度なクエリや集計クエリなどの操作もサポートしています。
  • 優れたスケーラビリティ: Django ORM は、Django REST フレームワーク、Django-Oscar などの他のサードパーティ ライブラリとシームレスに統合できます。
  • 自動マッピング: Django ORM は自動マッピングをサポートしています。開発者はデータベース テーブルの構造を定義するだけで、対応する Python クラスが自動的に生成されるため、開発プロセス中に繰り返されるコードの量が削減されます。
  • III. Django ORM の使用方法

Django のインストール

  1. 最初に Django をインストールする必要があり、pip を使用してインストールできます。
  2. pip install Django
    ログイン後にコピー

モデルを定義する

  1. Django ORM を使用する場合は、最初にモデル クラスを定義する必要があります。モデル クラスは、Python のクラスであり、データ テーブルとデータ テーブルの他の部分 メタデータ (テーブル名、インデックスなど)以下は簡単なモデル クラス定義です:
  2. 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 データ テーブルという名前のクラスを定義します。これには、titleauthorpub_date の 3 つのフィールドが含まれます。 max_length は文字列型フィールドの最大長を指定するために使用され、DateTimeField は時間型フィールドを格納するために使用されます。 データベース テーブルの作成

  1. モデル クラスの定義が完了したら、移行によってデータベース テーブルを生成する必要があります。 Django ORM には自動移行機能が用意されており、次のコマンドを実行するだけでデータ テーブルを生成できます:
  2. python manage.py makemigrations
    python manage.py migrate
    ログイン後にコピー
上記のコマンドにより

Book

テーブルが作成され、テーブル構造は定義されたモデルクラス。

CRUD 操作

  1. 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 は、テーブル結合クエリの 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 では、

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

MinCountSum などが含まれます。サンプル コードは次のとおりです: <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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート