本記事では、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 (OceanBase Database Proxy)のアドレスである場合もあります。
- -u:テナントの接続ユーザー名。書式はユーザー@テナント#クラスタ名となります。Oracleモードにおける管理者ユーザー名は、デフォルトで
sysです。データベースへ直接接続する場合はクラスタ名を指定しませんが、ODP経由で接続する際は指定が必要です。 - -p:ユーザーのパスワードです。
- -P:OceanBaseデータベースの接続ポート番号であり、ODPのリスニングポートでもあります。
- -D:接続対象のデータベース名です。
ステップ2:PyMySQLドライバーのインストール
PyMySQLは、Python3.xバージョンでMySQLサーバーに接続するためのライブラリです。PyMySQLはPythonデータベースAPI v2.0に準拠しており、pure-Python MySQLクライアントライブラリを含んでいます。
PyMySQLの詳細については、PyMySQL公式サイトおよび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データベースへの接続IPアドレス。ODP (OceanBase Database Proxy)のアドレスである場合もあります。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 (OceanBase Database Proxy)のアドレスである場合もあります。
- -u:テナントの接続ユーザー名。書式はユーザー@テナント#クラスタ名となります。クラスタのデフォルトテナントは sys、テナントのデフォルト管理者ユーザーは root です。データベースへ直接接続する場合はクラスタ名を指定しませんが、ODP経由で接続する際は指定が必要です。
- -p:ユーザーのパスワードです。
- -P:OceanBaseデータベースの接続ポート番号であり、ODPのリスニングポートでもあります。
- -D:接続対象のデータベース名です。
ステップ2:MySQL-Pythonドライバーのインストール
MySQL-pythonは、PythonでMySQLデータベースに接続するためのインターフェースで、Python Database API Specification 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データベースへの接続IPアドレス。ODP (OceanBase Database Proxy)のアドレスである場合もあります。user:
-uの値を使用します。テナントの接続ユーザー名で、書式はユーザー@テナント#クラスタ名となります。クラスタのデフォルトテナントは'sys'、テナントのデフォルト管理者ユーザーは'root'です。データベースに直接接続する場合は、クラスタ名の部分は不要ですが、ODP経由で接続する場合は指定する必要があります。password:
-pの値を使用します。ユーザーのパスワードです。port:
-Pの値を使用します。OceanBaseデータベースの接続ポート番号であり、ODPのリスニングポートでもあります。db:
-Dの値を使用します。接続対象のデータベース名です。
ステップ4:アプリケーションの実行
コードの編集が完了したら、test.pyを実行します。
python test.py
#以下の結果が返された場合は、データベースへの接続に成功し、サンプル文が正しく実行されたことを意味します。
((1L, 'hangzhou'), (2L, 'shanghai'))
詳細情報
OceanBaseデータベースのオープンソースコミュニティには、Python 3.xサンプルアプリケーションの完全なサンプルも用意されています。詳細については、Python3サンプルアプリケーションを参照してください。