Django は人気のある Python Web フレームワークであり、その優れた ORM (オブジェクト リレーショナル マッピング) メカニズムにより、開発者はデータベースを簡単に操作できます。ただし、実際のプロジェクトでは複数のデータベースを接続する必要があり、その際、プロジェクトの安定性や開発効率を確保するためには、ある程度のスキルが必要となります。
Django では、マルチデータベースのサポートは、Django フレームワーク自体が提供する関数に基づいています。ここでは、Django 開発におけるマルチデータベースの状況にうまく対処できるようにするための、マルチデータベース サポートのヒントをいくつか紹介します。
最初のステップは複数のデータベースを構成することです
Django フレームワークのマルチデータベース サポートを有効にするには、まず構成ファイル コードを記述する必要があります。 Django では、settings.py ファイルで設定できます。具体的なコードは次のとおりです。
DATABASES = {
'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'default_database', 'USER': 'user_name', 'PASSWORD': 'user_password', 'HOST': 'localhost', 'PORT': '5432', }, 'other_db': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'other_database', 'USER': 'user_name', 'PASSWORD': 'user_password', 'HOST': 'localhost', 'PORT': '5432', },
}
これは 2 つのデータベースを含む構成ファイルです。その中で、default と other_db によって異なるデータベースを区別できます。各データベースでは、ENGINE (データベース ドライバー名)、NAME (データベース名)、USER (ユーザー名)、PASSWORD (パスワード)、HOST (ホスト名)、PORT (ポート番号) などのパラメーターを指定する必要があります。
実際の開発では、MySQL、SQLite、Oracle、SQL Server など、複数の種類のデータベースに接続する必要がある場合があります。このような場合は、Django のドキュメントに従って構成できます。
2 番目のステップは、モデルで複数のデータベースを使用することです
Django では、モデルはデータをデータベースに保存する方法です。別のデータベースを使用するには、モデル内で特定のデータベース接続を指定する必要があります。
2 つのモデルがあり、1 つは User で、もう 1 つは Product:
class User(models.Model):
name = models.CharField(max_length=255)
class Product(models.Model) であるとします。
name = models.CharField(max_length=255) user = models.ForeignKey(User, on_delete=models.CASCADE)
ここでは、models.ForeignKey を使用して Product モデルと User モデルを接続します。次に、User モデルを 1 つのデータベースに保存し、Product モデルを別のデータベースに保存する必要があります。 Django では、各データ モデルのデータベースを指定する必要があります。
class User(models.Model):
name = models.CharField(max_length=255) class Meta: using = 'default'
class Product(models.Model):
name = models.CharField(max_length=255) user = models.ForeignKey(User, on_delete=models.CASCADE) class Meta: using = 'other_db'
この例では、User モデルをデフォルト接続として指定し、Product モデルを other_db 接続として指定します。これらのデータベース名は、以前に構成したものと同じです。
複数のデータベースを使用する場合、モデルごとにデータベースを指定する必要があることに注意してください。そうしないと、Django はデフォルトでデフォルトのデータベース接続を使用するため、アプリケーションで問題が発生する可能性があります。
3 番目のステップは、ビューで複数のデータベースを処理することです。
ビューでは、複数のデータベース接続を使用する必要がある場合があります。ビューで複数のデータベースを処理するには、次の手順に従う必要があります。
まず、データベース リンクをインポートする必要があります。
from django.db import connection
このインポート ステートメントは、すべてのデータベース リンクを含むクラスを返します。
次に、読み取りおよび書き込み可能なデータベース接続を作成する必要があります。データベース接続を作成するには 2 つの方法があります:
この例では、other_db 接続を使用します:
def my_view(request):
with connections['other_db'].cursor() as cursor: cursor.execute('SELECT * FROM some_table') row = cursor.fetchone() return HttpResponse(str(row))
ここでは、コンテキスト マネージャーを使用してデータベース接続を処理します。 。 cursor() メソッドを使用してデータベースをクエリするためのカーソル オブジェクトを作成し、execute() を使用してクエリ ステートメントを実行します。最後に、fetchone() メソッドを使用してクエリ結果を取得します。
上記の例からわかるように、ビューで with ステートメントを使用してデータベース接続を制御できます。このようにして、異なるデータベース間を切り替えることができます。
概要
Django では、優れたマルチデータベース サポートが提供されています。プロジェクト内で対話するためにさまざまなタイプのデータベース (MySQL、PostgreSQL、SQLite など) を使用でき、さまざまなモデルのさまざまなデータベースを使用できます。データベース接続を合理的に使用することで、データ対話プロセスをより適切に制御し、問題を回避できるため、プロジェクトの安定性と開発効率が向上します。
以上がDjango フレームワークでのマルチデータベース サポートのヒントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。