本記事では、Djangoを使用してOceanBaseデータベースに接続し、テーブルの作成、データの挿入、更新、クエリなどの基本的なデータベース操作を実行する方法を紹介します。
前提条件
- Python 3.xとpipがインストール済みであること。
- OceanBaseデータベースがインストール済みで、MySQLモードのテナントが作成されていること。
手順
- OceanBaseデータベースの接続文字列を取得します。
- DjangoとMySQLクライアントライブラリをインストールします。
- Djangoプロジェクトとアプリケーションを作成します。
- データベース接続を設定します。
- モデルを作成します。
- 移行を実行します。
- ビューとURLの設定を作成します。
- 開発サーバーを起動します。
ステップ1:OceanBaseデータベースの接続文字列を取得する
OceanBaseデータベースのデプロイ担当者または管理者から、該当するデータベース接続文字列を取得します。
obclient -h$host -P$port -u$user_name -p$password -D$database_name
パラメータ説明:
$host:OceanBaseデータベースへの接続IPアドレス。OceanBaseデータベースプロキシ(OceanBase Database Proxy、ODP)接続方式ではODPアドレスを使用し、直接接続方式ではOBServerノードのIPアドレスを使用します。$port:OceanBaseデータベースへの接続ポート。ODP接続方式のデフォルトポートは2883で、ODPデプロイ時にカスタマイズ可能です。直接接続方式のデフォルトポートは2881で、OceanBaseデータベースのデプロイ時にカスタマイズ可能です。$database_name:アクセス対象のデータベース名。注意
テナントに接続するユーザーには、データベースに対する
CREATE、INSERT、UPDATE、およびSELECT権限が付与されていなければなりません。ユーザー権限の詳細については、MySQLモードの権限分類を参照してください。$user_name:テナントの接続アカウント。ODP接続の一般的な形式:ユーザー名@テナント名#クラスタ名またはクラスタ名:テナント名:ユーザー名。直接接続方式の形式:ユーザー名@テナント名。$password:アカウントのパスワード。
接続文字列の詳細については、OBClientを使用してOceanBaseテナントに接続するを参照してください。
例:
obclient -hxxx.xxx.xxx.xxx -P2881 -utest_user001@mysql001 -p****** -Dtest
ステップ2:DjangoとMySQLクライアントライブラリのインストール
Djangoは高度なPython Webフレームワークであり、ORM(オブジェクト関係マッピング)システムを提供し、データベース操作を簡素化できます。Djangoは、MySQL、PostgreSQL、SQLiteなど、さまざまなデータベースバックエンドをサポートしています。
コマンドプロンプトまたはPowerShellターミナルを開き、以下のコマンドを実行して、DjangoとMySQLクライアントライブラリをインストールします。
pip install django mysqlclient
インストールが完了したら、以下のコマンドを実行してインストールが正常に完了したかどうかを確認します:
pip list | grep -i django
説明
Djangoは強力なWebフレームワークであり、ORMシステムを提供し、データベース操作を簡素化できます。DjangoのORMシステムは、MySQL、PostgreSQL、SQLiteなど、さまざまなデータベースバックエンドをサポートしています。
ステップ3:Djangoプロジェクトとアプリケーションの作成
oceanbase_demoという名前のDjangoプロジェクトを作成します。django-admin startproject oceanbase_demoプロジェクトのディレクトリに移動します。
cd oceanbase_demousersという名前のアプリケーションを作成します。python manage.py startapp users
ステップ4:データベース接続の設定
oceanbase_demo/settings.pyファイルを開き、データベース設定を変更します。DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'test', 'USER': 'test_user001@mysql001', 'PASSWORD': '******', 'HOST': 'xxx.xxx.xxx.xxx', 'PORT': '2881', 'OPTIONS': { 'charset': 'utf8mb4', }, } }INSTALLED_APPSにusersアプリケーションを追加します。INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'users', ]
ステップ5:モデルの作成
users/models.pyファイルを開き、Userモデルを作成します。from django.db import models class User(models.Model): name = models.CharField(max_length=50) age = models.IntegerField() def __str__(self): return f"{self.name} ({self.age})"
ステップ6:移行を実行する
移行ファイルを作成します。
python manage.py makemigrations移行を適用します。
python manage.py migrate
ステップ7:ビューとURLの設定を作成する
users/views.pyファイルを開き、ビュー関数を作成します。from django.shortcuts import render from django.http import HttpResponse from .models import User def index(request): # データの挿入 User.objects.create(name='John', age=20) User.objects.create(name='Lucy', age=25) User.objects.create(name='Tom', age=30) # データの更新 user = User.objects.get(name='Lucy') user.age = 26 user.save() # データのクエリ users = User.objects.all() result = "<h1>Users</h1><ul>" for user in users: result += f"<li>{user}</li>" result += "</ul>" return HttpResponse(result)oceanbase_demo/urls.pyファイルを開き、URLを設定します。from django.contrib import admin from django.urls import path from users import views urlpatterns = [ path('admin/', admin.site.urls), path('', views.index, name='index'), ]
ステップ8:開発サーバーを起動する
開発サーバーを起動します。
python manage.py runserverブラウザで
http://127.0.0.1:8000/,查看结果。` にアクセスします。実行結果は次のとおりです:
<h1>Users</h1> <ul> <li>John (20)</li> <li>Lucy (26)</li> <li>Tom (30)</li> </ul>
エラー処理
Djangoを使用してOceanBaseデータベースに接続する際、さまざまなエラーが発生する可能性があります。以下は一般的なエラーとその対処方法です:
接続エラー:データベースに接続できない場合は、ホスト名、ポート、ユーザー名、パスワード、データベース名を含む接続パラメータが正しいかどうか確認してください。
権限エラー:権限に関連するエラーが発生した場合は、ユーザーが必要な操作を実行するために十分な権限を持っていることを確認してください。
SQL構文エラー:SQLステートメントに構文エラーがある場合は、SQLステートメントの構文が正しいかどうか確認してください。
データ型エラー:挿入したデータ型がテーブル定義とマッチしない場合は、挿入したデータ型が正しいことを確認してください。
Djangoでは、try-except ステートメントを使用してこれらのエラーをキャッチし、処理することができます。これにより、プログラムはエラー発生時にクラッシュすることなく適切に対処できます。同時に、Djangoのログシステムを使用してエラー情報を記録することで、デバッグや問題の調査が容易になります。
関連ドキュメント
OceanBaseデータベースへの接続方法の詳細については、接続方法の概要を参照してください。
データベース作成の詳細については、CREATE DATABASEを参照してください。