本ドキュメントでは、peeweeを使用してOceanBase Cloudに接続し、テーブルの作成、データの挿入、データの更新、データのクエリなどの基本的なデータベース操作を実行する方法について説明します。
前提条件
- Python 3.xおよびpipがインストールされていること。
- OceanBase Cloudのアカウントを登録し、クラスタインスタンスおよびOceanBase CloudのMySQL互換モードのテナントを作成済みであること。詳細については、クラスタインスタンスの作成およびテナントの作成をご参照ください。
操作手順
- OceanBase Cloudの接続文字列を取得します。
- peeweeおよびMySQLクライアントライブラリをインストールします。
test.pyファイルを作成し、データベース接続情報を入力します。test.pyファイルを実行します。
操作手順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:peeweeおよびMySQLクライアントライブラリのインストール
peeweeは軽量なPython ORM(オブジェクト関係マッピング)ライブラリであり、シンプルかつ強力なAPIを提供してデータベース操作を簡素化します。peeweeは、MySQL、PostgreSQL、SQLiteなど、複数のデータベースバックエンドに対応しています。
コマンドプロンプトまたはPowerShellターミナルを開き、以下のコマンドを実行してpeeweeおよびMySQLクライアントライブラリをインストールします。
pip install peewee pymysql
インストール完了後、以下のコマンドを使用してインストールが成功したかを確認できます。
pip list | grep peewee
説明
peeweeは軽量なORMライブラリであり、シンプルかつ強力なAPIを提供してデータベース操作を簡素化します。peeweeは、MySQL、PostgreSQL、SQLiteなど、複数のデータベースバックエンドに対応しています。
操作手順3:test.pyファイルの作成とデータベース接続情報の入力
手順1:OceanBase Cloudの接続文字列の取得の情報に基づいてtest.pyファイルを作成し、データベース接続情報を入力します。
test.pyという名前のファイルを作成します。test.pyファイルに以下の内容を入力し、実際の環境に合わせてデータベース接続情報を変更します。test.pyファイルの内容例:from peewee import * # データベース接続情報 DB_USER = 'mysql001' DB_PASSWORD = '******' DB_HOST = 't********.********.oceanbase.cloud' DB_PORT = 3306 DB_NAME = 'test' # データベース接続の作成 db = MySQLDatabase( DB_NAME, user=DB_USER, password=DB_PASSWORD, host=DB_HOST, port=DB_PORT ) # モデルの定義 class User(Model): name = CharField(max_length=50) age = IntegerField() class Meta: database = db table_name = 'users' def __str__(self): return f"{self.name} ({self.age})"
# データベースへの接続 db.connect()
db.create_tables([User])
User.create(name='John', age=20) User.create(name='Lucy', age=25) User.create(name='Tom', age=30)
user = User.get(User.name == 'Lucy') user.age = 26 user.save()
users = User.select() for user in users: print(user)
db.close()
### 操作手順4:test.pyファイルの実行
コマンドプロンプトまたはPowerShellターミナルを開き、`test.py`ファイルを実行してデータをクエリし、結果を出力します。
1. `test.py`ファイルがあるディレクトリに移動します。
**例:**
```shell
cd D:\demo\demo
```
2. `test.py`ファイルを実行します。
**例:**
```shell
python test.py
```
実行結果は以下のとおりです。
```shell
John (20)
Lucy (26)
Tom (30)
```
## エラー処理
peeweeを使用してOceanBase Cloudに接続する際、さまざまなエラーが発生する可能性があります。以下に、一般的なエラーとその対処方法を示します。
1. **接続エラー**:データベースに接続できない場合は、ホスト名、ポート、ユーザー名、パスワード、データベース名などの接続パラメータが正しいか確認してください。
2. **権限エラー**:権限に関連するエラーが発生した場合は、ユーザーが必要な操作を実行するための十分な権限を持っているか確認してください。
3. **SQL構文エラー**:SQL文に構文エラーがある場合は、SQL文の構文が正しいか確認してください。
4. **データ型エラー**:挿入するデータ型がテーブル定義と一致しない場合は、挿入するデータ型が正しいか確認してください。
peeweeでは、`try-except`文を使用してこれらのエラーをキャッチおよび処理し、エラー発生時にプログラムが直接クラッシュするのではなく、適切に処理されるようにすることができます。また、Pythonの`logging`モジュールを使用してエラー情報を記録し、デバッグやトラブルシューティングを容易にすることもできます。
## 関連情報
* OceanBase Cloudへの接続の詳細については、[接続方法の概要](../../../../../300.tp-instance/400.connect-instance-tp/100.mysql/100.connection-overview-mysql.md)をご参照ください。