本記事では、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を参照してください。