本記事では、peewee を使用して OceanBase データベースに接続し、テーブルの作成、データの挿入、更新、クエリなどの基本的なデータベース操作を実装する方法について説明します。
前提条件
- Python 3.xとpipがインストール済みであること。
- OceanBaseデータベースをインストール済みで、MySQLテナントが作成されていること。
操作手順
- OceanBaseデータベースの接続文字列を取得します。
- peeweeとMySQLクライアントライブラリをインストールします。
test.pyファイルを作成し、データベース接続情報を入力します。test.pyファイルを実行します。
ステップ1:OceanBaseデータベースの接続文字列を取得する
OceanBaseデータベースのデプロイ担当者または管理者から、該当するデータベース接続文字列を取得します。
```shell
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テナントに接続するを参照してください。
例:
```shell
obclient -hxxx.xxx.xxx.xxx -P2881 -utest_user001@mysql001 -p****** -Dtest
```
ステップ2:peeweeとMySQLクライアントライブラリをインストールする
peeweeは軽量なPython ORM(オブジェクト関係マッピング)ライブラリであり、シンプルで強力なAPIを提供し、データベース操作を簡素化できます。peeweeはMySQL、PostgreSQL、SQLiteなど、さまざまなデータベースバックエンドをサポートしています。
コマンドプロンプトまたはPowerShellターミナルを開き、以下のコマンドを実行して、peeweeとMySQLクライアントライブラリをインストールします。
```shell
pip install peewee pymysql
```
インストール完了後、以下のコマンドを実行してインストールが成功したかどうかを確認できます:
pip list | grep peewee
説明
peeweeは軽量なORMライブラリであり、シンプルで強力なAPIを提供し、データベース操作を簡素化できます。peeweeはMySQL、PostgreSQL、SQLiteなど、さまざまなデータベースバックエンドをサポートしています。
ステップ3:test.pyファイルを作成し、データベース接続情報を入力する
ステップ1:OceanBaseデータベースの接続文字列を取得する の情報に基づいて、test.py ファイルを作成し、データベース接続情報を入力します。
test.pyという名前のファイルを作成します。test.pyファイルに以下の内容を入力し、実際の状況に応じてデータベース接続情報を修正します。
test.py ファイルの内容例は以下のとおりです:
from peewee import *
# データベース接続情報
DB_USER = 'test_user001@mysql001'
DB_PASSWORD = '******'
DB_HOST = 'xxx.xxx.xxx.xxx'
DB_PORT = 2881
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 ファイルを実行して、データをクエリし、結果を出力します。
test.pyファイルがあるディレクトリに移動します。
例:
cd D:\demo\demo
test.pyファイルを実行します。
例:
python test.py
結果は次のとおりです:
John (20)
Lucy (26)
Tom (30)
エラー処理
peeweeを使用してOceanBaseデータベースに接続する際、さまざまなエラーが発生する可能性があります。以下は一般的なエラーとその対処方法です:
接続エラー:データベースに接続できない場合は、ホスト名、ポート、ユーザー名、パスワード、データベース名を含む接続パラメータが正しいかどうか確認してください。
権限エラー:権限に関連するエラーが発生した場合は、ユーザーが必要な操作を実行するための十分な権限を持っていることを確認してください。
SQL構文エラー:SQLステートメントに構文エラーがある場合は、SQLステートメントの構文が正しいかどうか確認してください。
データ型エラー:挿入したデータ型がテーブル定義とマッチしない場合は、挿入したデータ型が正しいことを確認してください。
peeweeでは、try-except ステートメントを使用してこれらのエラーをキャッチし、処理することができます。これにより、プログラムはエラー発生時にクラッシュすることなく適切に対処できます。同時に、Pythonの logging モジュールを使用してエラー情報を記録することで、デバッグや問題の調査が容易になります。
関連ドキュメント
OceanBaseデータベースへの接続方法の詳細については、接続方法の概要を参照してください。
データベース作成の詳細については、CREATE DATABASEを参照してください。