本記事では、Pythonドライバーを使用してOceanBaseデータベースに接続し、使用する方法について説明します。使用するドライバーはMySQL-connector-pythonです。
前提条件
- Python2.7/Python 3.xおよびpipがインストール済みであること。
- OceanBaseデータベースがインストール済みで、MySQLモードのテナントが作成されていること。
操作手順
- OceanBaseデータベースの接続文字列を取得します。
- MySQL-connector-pythonドライバーをインストールします。
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:MySQL-connector-pythonドライバーをインストールする
MySQL Connector/Pythonは、MySQLが公式に提供するMySQLデータベース接続用公式ドライバーです。これは、Pythonプログラミング言語でコンパイルされており、PythonからMySQLデータベースへの接続と操作を行うために使用されます。MySQL Connector/Pythonは、Python 2.7およびPython 3.xバージョンに対応しています。
コマンドプロンプトまたはPowerShellターミナルを開き、以下のコマンドを実行してMySQL-connector-pythonドライバーをインストールします。
pip3 install mysql-connector-python
インストールが完了したら、以下のコマンドを実行してインストールが正常に完了したかどうかを検証します:
pip3 list | grep mysql-connector-python
ステップ3:アプリケーションを作成する
ステップ3:test.pyファイルを作成し、データベース接続情報を入力する
ステップ1:OceanBaseデータベースの接続文字列を取得する に記載されている情報に基づいて、test.pyファイルを作成して、データベース接続情報を入力します。
test.pyという名前のファイルを作成します。test.pyファイルに以下の内容を入力し、実際の状況に応じてデータベース接続情報を修正します。test.pyファイルの内容例:import mysql.connector # データベース接続情報 config = { 'host': 'xxx.xxx.xxx.xxx', 'port': 2881, 'user': 'test_user001@mysql001', 'password': '******', 'database': 'test' } # データベース接続の作成 conn = mysql.connector.connect(**config) cursor = conn.cursor() # データベースの作成 cursor.execute("CREATE DATABASE IF NOT EXISTS test") # データベースの使用 cursor.execute("USE testdb") # テーブルの作成 cursor.execute(""" CREATE TABLE IF NOT EXISTS test_table ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, age INT ) """) # データの挿入 cursor.execute(""" INSERT INTO test_table (name, age) VALUES ('John', 20), ('Lucy', 25), ('Tom', 30) """) # データの更新 cursor.execute(""" UPDATE test_table SET age = 26 WHERE name = 'Lucy' """) # データのクエリ cursor.execute("SELECT * FROM test_table") rows = cursor.fetchall() for row in rows: print(row) # 接続を閉じる cursor.close() conn.close()
ステップ4:test.pyファイルを実行する
コマンドプロンプトまたはPowerShellターミナルを開き、test.py ファイルを実行して、データをクエリし、結果を出力します。
test.pyファイルがあるディレクトリに移動します。例:
cd D:\demo\demotest.pyファイルを実行します。例:
python test.py実行結果は次のとおりです:
(1, 'John', 20) (2, 'Lucy', 26) (3, 'Tom', 30)
エラー処理
MySQL-connector-pythonを使用してOceanBaseデータベースに接続する際、さまざまなエラーが発生する可能性があります。以下は、一般的なエラーとその処理方法です:
接続エラー:データベースに接続できない場合、ホスト名、ポート、ユーザー名、パスワード、データベース名を含む接続パラメータが正しいかどうか確認してください。
権限エラー:権限に関連するエラーが発生した場合、ユーザーが必要な操作を実行するために十分な権限を持っていることを確認してください。
SQL構文エラー:SQLステートメントに構文エラーがある場合、SQLステートメントの構文が正しいかどうか確認してください。
データ型エラー:挿入したデータ型がテーブルの定義とマッチしない場合、挿入したデータ型が正しいことを確認してください。
コード内で try-except ステートメントを使用してこれらのエラーをキャッチし、処理することで、エラー発生時にプログラムがクラッシュすることなく適切に対処できるようにします。同時に、logging モジュールを使用してエラーメッセージを記録することで、デバッグや問題のトラブルシューティングを容易にします。
関連ドキュメント
OceanBaseデータベースに接続するための詳細情報については、接続方法の概要を参照してください。
データベースの作成に関する詳細については、CREATE DATABASEを参照してください。