本記事では、peeweeを使用してOceanBaseデータベースに接続し、テーブルの作成、データの挿入、データの更新、クエリなどの基本操作を実行する方法について説明します。
前提条件
- Python 3.xとpipがインストール済みであること。
- OceanBaseデータベースをインストール済みで、MySQLモードのテナントが作成されていること。
操作手順
- OceanBaseデータベースの接続文字列を取得します。
- peeweeとMySQLクライアントライブラリをインストールします。
test.pyファイルを作成し、データベース接続情報を入力します。test.pyファイルを実行します。
ステップ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: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データベースの接続文字列を取得する に記載されている情報に基づいて、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\demotest.pyファイルを実行します。例:
python test.py実行結果は次のとおりです:
John (20) Lucy (26) Tom (30)
エラー処理
peeweeを使用してOceanBaseデータベースに接続する際、さまざまなエラーが発生する可能性があります。以下は一般的なエラーとその処理方法です:
接続エラー:データベースに接続できない場合は、ホスト名、ポート、ユーザー名、パスワード、データベース名を含む接続パラメータが正しいかどうか確認してください。
権限エラー:権限に関連するエラーが発生した場合は、ユーザーが必要な操作を実行するために十分な権限を持っていることを確認してください。
SQL構文エラー:SQLステートメントに構文エラーがある場合は、SQLステートメントの構文が正しいかどうか確認してください。
データ型エラー:データ型がテーブル定義とマッチしない場合は、挿入するデータ型が正しいことを確認してください。
peeweeでは、try-except ステートメントを使用してこれらのエラーをキャッチし処理することができ、プログラムがエラー発生時にもプログラムがクラッシュせず、適切に対処できるようにします。同時に、Pythonの logging モジュールを使用してエラー情報を記録し、デバッグや問題の特定を容易にすることができます
関連ドキュメント
その他のOceanBaseデータベースに接続するための詳細情報については、接続方法の概要を参照してください。
その他のデータベースの作成に関する詳細については、CREATE DATABASEを参照してください。