本記事では、Djangoを使用してOceanBase Cloudクラウドデータベースに接続し、テーブルの作成、データの挿入、更新、クエリなどの基本的なデータベース操作を実装する方法について説明します。
前提条件
- Python 3.xおよびpipがインストールされていること。
- OceanBase Cloudのアカウントを登録し、クラスタインスタンスとOceanBase CloudのMySQL互換モードのテナントを作成していること。詳細については、クラスタインスタンスの作成およびテナントの作成をご参照ください。
##操作手順
- OceanBase Cloudの接続文字列を取得します。
- DjangoおよびMySQLクライアントライブラリをインストールします。
- Djangoプロジェクトとアプリケーションを作成します。
- データベース接続を設定します。
- モデルを作成します。
- マイグレーションを実行します。
- ビューとURL設定を記述します。
- 開発サーバーを実行します。
操作手順1:OceanBase Cloudの接続文字列の取得
OB Cloudクラウドコンソールにログインします。インスタンス一覧ページで対象インスタンスの情報を展開し、対象テナントの下で 接続 > 接続文字列を取得 を選択します。
詳細な操作については、接続文字列の取得をご参照ください。
作成済みのOceanBase Cloudに基づいて、以下のURLの対応する情報を入力します。
obclient -h$host -P$port -u$user_name -p$password -D$database_nameパラメータの説明:
$host:OceanBase Cloudの接続アドレスを指定します。例:t********.********.oceanbase.cloud。$port:OceanBase Cloudの接続ポートを指定します。デフォルトは3306です。$database_name:アクセスするデータベース名を指定します。
注意
テナントに接続するユーザーは、該当データベースに対する
CREATE、INSERT、UPDATE、およびSELECT権限を持っている必要があります。アカウント権限の詳細については、アカウントの作成と管理をご参照ください。$user_name:データベースにアクセスするアカウントを指定します。$password:アカウントのパスワードを指定します。
例:
obclient -h t********.********.oceanbase.cloud -P3306 -u 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': 'mysql001', PASSWORD': '******', HOST': 't********.********.oceanbase.cloud', PORT': '3306', 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/,查看结果。`
返される結果は以下のとおりです。
```html
<h1>Users</h1>
<ul>
<li>John (20)</li>
<li>Lucy (26)</li>
<li>Tom (30)</li>
</ul>
```
エラー処理
Djangoを使用してOceanBase Cloudに接続する際、さまざまなエラーが発生する可能性があります。以下に、一般的なエラーとその対処方法を示します。
接続エラー:データベースに接続できない場合は、ホスト名、ポート、ユーザー名、パスワード、データベース名などの接続パラメータが正しいか確認してください。
権限エラー:権限に関連するエラーが発生した場合は、ユーザーが必要な操作を実行するための十分な権限を持っているか確認してください。
SQL構文エラー:SQL文に構文エラーがある場合は、SQL文の構文が正しいか確認してください。
データ型エラー:挿入するデータ型がテーブル定義と一致しない場合は、挿入するデータ型が正しいか確認してください。
Djangoでは、try-except文を使用してこれらのエラーをキャッチして処理することで、エラー発生時にプログラムが直接クラッシュするのではなく、適切に処理されるようにすることができます。また、Djangoのログシステムを使用してエラー情報を記録し、デバッグやトラブルシューティングを容易にすることもできます。
関連情報
- OceanBase Cloudへの接続に関する詳細については、接続方法の概要をご参照ください。