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

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

Jun 11, 2023 am 09:12 AM
python orm django

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:php;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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPおよびPython:さまざまなパラダイムが説明されています PHPおよびPython:さまざまなパラダイムが説明されています Apr 18, 2025 am 12:26 AM

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPとPythonの選択:ガイド PHPとPythonの選択:ガイド Apr 18, 2025 am 12:24 AM

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

Python vs. JavaScript:学習曲線と使いやすさ Python vs. JavaScript:学習曲線と使いやすさ Apr 16, 2025 am 12:12 AM

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

Visual StudioコードはPythonで使用できますか Visual StudioコードはPythonで使用できますか Apr 15, 2025 pm 08:18 PM

VSコードはPythonの書き込みに使用でき、Pythonアプリケーションを開発するための理想的なツールになる多くの機能を提供できます。ユーザーは以下を可能にします。Python拡張機能をインストールして、コードの完了、構文の強調表示、デバッグなどの関数を取得できます。デバッガーを使用して、コードを段階的に追跡し、エラーを見つけて修正します。バージョンコントロールのためにGitを統合します。コードフォーマットツールを使用して、コードの一貫性を維持します。糸くずツールを使用して、事前に潜在的な問題を発見します。

PHPとPython:彼らの歴史を深く掘り下げます PHPとPython:彼らの歴史を深く掘り下げます Apr 18, 2025 am 12:25 AM

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

Windows 8でコードを実行できます Windows 8でコードを実行できます Apr 15, 2025 pm 07:24 PM

VSコードはWindows 8で実行できますが、エクスペリエンスは大きくない場合があります。まず、システムが最新のパッチに更新されていることを確認してから、システムアーキテクチャに一致するVSコードインストールパッケージをダウンロードして、プロンプトとしてインストールします。インストール後、一部の拡張機能はWindows 8と互換性があり、代替拡張機能を探すか、仮想マシンで新しいWindowsシステムを使用する必要があることに注意してください。必要な拡張機能をインストールして、適切に動作するかどうかを確認します。 Windows 8ではVSコードは実行可能ですが、開発エクスペリエンスとセキュリティを向上させるために、新しいWindowsシステムにアップグレードすることをお勧めします。

ターミナルVSCODEでプログラムを実行する方法 ターミナルVSCODEでプログラムを実行する方法 Apr 15, 2025 pm 06:42 PM

VSコードでは、次の手順を通じて端末でプログラムを実行できます。コードを準備し、統合端子を開き、コードディレクトリが端末作業ディレクトリと一致していることを確認します。プログラミング言語(pythonのpython your_file_name.pyなど)に従って実行コマンドを選択して、それが正常に実行されるかどうかを確認し、エラーを解決します。デバッガーを使用して、デバッグ効率を向上させます。

VSCODE拡張機能は悪意がありますか? VSCODE拡張機能は悪意がありますか? Apr 15, 2025 pm 07:57 PM

VSコード拡張機能は、悪意のあるコードの隠れ、脆弱性の活用、合法的な拡張機能としての自慰行為など、悪意のあるリスクを引き起こします。悪意のある拡張機能を識別する方法には、パブリッシャーのチェック、コメントの読み取り、コードのチェック、およびインストールに注意してください。セキュリティ対策には、セキュリティ認識、良好な習慣、定期的な更新、ウイルス対策ソフトウェアも含まれます。

See all articles