本記事では、Pythonドライバを使用してOceanBaseデータベースに接続し、操作する方法について説明します。Python環境のバージョンによって使用するドライバは異なり、Python 3.xシリーズではPyMySQLドライバを、Python 2.xシリーズではMySQL-pythonドライバを使用する必要があります。
前提条件
ローカル環境にPython言語のランタイム環境が既にデプロイされていることを確認してください。
Python 3.xによるアプリケーションの作成
Python 3.xでアプリケーションを作成する場合、データベースへの接続および操作にはPyMySQLドライバが必要です。
ステップ1:データベース接続文字列の取得
OceanBaseデータベースのデプロイ担当者または管理者から、該当するデータベース接続文字列を取得します。例:
obclient -h100.88.xx.xx -uroot@test -p****** -P2881 -Doceanbase
データベース接続文字列には、データベースへのアクセスに必要なパラメータ情報が含まれています。アプリケーションを作成する前に、データベース接続文字列を使用してデータベースへのログインを検証し、接続文字列のパラメータ情報が正しいことを確認できます。
パラメータ説明:
- -h:OceanBaseデータベースの接続IPアドレス。場合によってはODPのアドレスです。
- -u:テナントの接続ユーザー名。形式は ユーザー@テナント#クラスタ名 です。クラスタのデフォルトテナントは'sys'、テナントのデフォルト管理者ユーザーは'root'です。データベースに直接接続する場合はクラスタ名を記入せず、ODPを介して接続する場合は記入する必要があります。
- -p:ユーザーパスワード。
- -P:OceanBaseデータベースの接続ポート番号。ODPのリスニングポートでもあります。
- -D:アクセスするデータベース名。
ステップ2:PyMySQLドライバのインストール
PyMySQLは、Python3.xバージョンでMySQLサーバーに接続するためのライブラリです。PyMySQLはPythonデータベースAPI v2.0仕様に準拠しており、pure-Python MySQLクライアントライブラリを含んでいます。
PyMySQLの詳細については、PyMySQL公式Webサイトおよび関連APIリファレンスドキュメントを参照してください。
PyMySQLには以下の2つのインストール方法があります:
コマンドラインを使用したインストール
python3 -m pip install PyMySQLソースコードからコンパイルしてインストール
git clone https://github.com/PyMySQL/PyMySQL cd PyMySQL/ python3 setup.py install
ステップ3:アプリケーションの作成
実行サンプル test.py を編集します。コードは以下の通りです:
#!/usr/bin/python3
import pymysql
conn = pymysql.connect(host="localhost", port=2881,
user="root", passwd="", db="test")
cur = conn.cursor()
try:
#テーブルcitiesを作成
sql = 'create table cities (id int, name varchar(24))'
cur.execute(sql)
#テーブルcitiesに2組のデータを挿入
sql = "insert into cities values(1,'hangzhou'),(2,'shanghai')"
cur.execute(sql)
#テーブルcitiesのすべてのデータをクエリ
sql = 'select * from cities'
cur.execute(sql)
ans = cur.fetchall()
print(ans)
#テーブルcitiesを削除
sql = 'drop table cities'
cur.execute(sql)
finally:
cur.close()
conn.close()
コード内のデータベース接続パラメータを変更します。以下の項目を参考に、対応する値はステップ1で取得したデータベース接続文字列から取得します。
user:
-uパラメータから取得します。テナントの接続ユーザー名で、形式は ユーザー@テナント#クラスタ名 です。クラスタのデフォルトテナントは'sys'、テナントのデフォルト管理者ユーザーは'root'です。データベースに直接接続する場合はクラスタ名を記入せず、ODPを介して接続する場合は記入する必要があります。password:
-pパラメータから取得します。ユーザーパスワードです。host:
-hパラメータから取得します。OceanBaseデータベースの接続アドレスで、場合によってはODPのアドレスです。port:
-Pパラメータから取得します。OceanBaseデータベースの接続ポート番号で、ODPのリスニングポートでもあります。db:
-Dパラメータから取得します。アクセスするデータベース名です。
ステップ4:アプリケーションを実行する
コードの編集が完了したら、test.py を実行します。
python3 test.py
#以下の結果が返されれば、データベースへの接続に成功し、サンプルステートメントが正しく実行されたことを示します。
((1, 'hangzhou'), (2, 'shanghai'))
Python 2.xでのアプリケーション作成
Python 2.xでアプリケーションを作成する場合、データベースへの接続および操作にはMySQL-pythonドライバが必要です。MySQL-pythonは、Python2.Xバージョンでデータベースに接続するためのライブラリです。
ステップ1:データベース接続文字列の取得
OceanBaseデータベースのデプロイ担当者または管理者から、該当するデータベース接続文字列を取得します。例:
obclient -h100.88.xx.xx -uroot@test -p****** -P2881 -Doceanbase
データベース接続文字列には、データベースへのアクセスに必要なパラメータ情報が含まれています。アプリケーションを作成する前に、データベース接続文字列を用いてデータベースへのログインを検証し、接続文字列のパラメータ情報が正しいことを確認してください。
パラメータ説明:
- -h:OceanBaseデータベースの接続IPアドレス。場合によってはODPのアドレスです。
- -u:テナントの接続ユーザー名。形式は ユーザー@テナント#クラスタ名 です。クラスタのデフォルトテナントは'sys'、テナントのデフォルト管理者ユーザーは'root'です。データベースに直接接続する場合はクラスタ名を記入せず、ODP経由で接続する場合は記入が必要です。
- -p:ユーザーパスワード。
- -P:OceanBaseデータベースの接続ポート番号。ODPのリスニングポートでもあります。
- -D:アクセス対象のデータベース名。
ステップ2:MySQL-pythonドライバのインストール
MySQL-pythonは、PythonがMySQLデータベースに接続するためのインターフェースであり、PythonデータベースAPI仕様V2.0を実装し、MySQL C APIに基づいて構築されています。
MySQL-pythonの詳細については、MySQL-python公式サイトおよびGithubドキュメントを参照してください。
MySQL-pythonドライバはyumを使用してインストールできます。コマンドは以下のとおりです:
yum install MySQL-python
ステップ3:アプリケーションの作成
実行サンプル test2.py を編集します。コードは以下のとおりです:
#!/usr/bin/python2
import MySQLdb
conn= MySQLdb.connect(
host='127.0.0.1',
port = 2881,
user='root',
passwd='',
db ='test'
)
cur = conn.cursor()
try:
#テーブルcitiesを作成
sql = 'create table cities (id int, name varchar(24))'
cur.execute(sql)
#テーブルcitiesに2組のデータを挿入
sql = "insert into cities values(1,'hangzhou'),(2,'shanghai')"
cur.execute(sql)
#テーブルcitiesの全データをクエリ
sql = 'select * from cities'
cur.execute(sql)
ans = cur.fetchall()
print(ans)
#テーブルcitiesを削除
sql = 'drop table cities'
cur.execute(sql)
finally:
cur.close()
conn.close()
コード内のデータベース接続パラメータを修正します。以下のフィールドを参照し、対応する値はステップ1で取得したデータベース接続文字列から取得します。
host:
-hパラメータから取得します。OceanBaseデータベースの接続アドレスで、場合によってはODPのアドレスです。user:
-uパラメータから取得します。テナントの接続ユーザー名で、形式は ユーザー@テナント#クラスタ名 です。クラスタのデフォルトテナントは'sys'、テナントのデフォルト管理者ユーザーは'root'です。データベースに直接接続する場合はクラスタ名を記入せず、ODP経由で接続する場合は記入が必要です。passwd:
-pパラメータから取得します。ユーザーパスワードです。port:
-Pパラメータから取得します。OceanBaseデータベースの接続ポート番号で、ODPのリスニングポートでもあります。db:
-Dパラメータから取得します。アクセス対象のデータベース名です。
ステップ4:アプリケーションの実行
コードの編集が完了したら、test.py を実行します。
python test.py
#以下の結果が返された場合、データベース接続が成功し、サンプル文が正しく実行されたことを示します
((1L, 'hangzhou'), (2L, 'shanghai'))
詳細を見る
Python 3.x サンプルアプリケーションの作成については、OceanBase データベースのオープンソースコミュニティにも関連する完全なサンプルがあります。詳細については、Python3 サンプルアプリケーション を参照してください。