mysqlclient ライブラリを使用して AnalyticDB for MySQL クラスターに接続し、SQL ステートメントを実行して結果を取得します。
前提条件
開始する前に、以下が準備できていることを確認してください:
Python 3
mysqlclientライブラリがインストールされていること:mysqlclientは Python 3 のパッケージ名です。コードではMySQLdbとしてインポートされます。pip install mysqlclientデータベースとアカウント (特権アカウントまたは標準アカウント) を持つ AnalyticDB for MySQL クラスター
クラスターへの接続
以下の例では、接続を確立し、クエリを実行してデータベースのバージョンを取得し、接続を閉じます。
import MySQLdb
# クラスターへの接続を開きます。
db = MySQLdb.connect(
host="<endpoint>", # クラスターのエンドポイントまたは IP アドレス
port=3306, # ポート番号
user="<account-name>", # 特権アカウントまたは標準アカウント
passwd="<password>", # アカウントのパスワード
db="<db-name>" # ターゲットデータベース名
)
cursor = db.cursor()
# SQL ステートメントを実行します。
cursor.execute("SELECT VERSION()")
# 結果をフェッチします。
data = cursor.fetchone()
print("Database version: %s" % data)
# 接続を閉じます。
db.close()コードを実行する前に、プレースホルダーを置き換えてください:
| プレースホルダー | 説明 | 例 |
|---|---|---|
<endpoint> | クラスターのエンドポイントまたは IP アドレス | am-bp***.ads.aliyuncs.com |
<account-name> | 接続に使用するアカウントの名前 | myaccount |
<password> | アカウントのパスワード | — |
<db-name> | ターゲットデータベースの名前 | mydb |
AnalyticDB for MySQL は、特権アカウントと標準アカウントの 2 種類のアカウントをサポートしています。どちらのアカウントも、上記の方法で接続できます。
接続エラーの処理
接続を try/except ブロックでラップして、障害をキャッチして診断します:
import MySQLdb
db = None
try:
db = MySQLdb.connect(
host="<endpoint>",
port=3306,
user="<account-name>",
passwd="<password>",
db="<db-name>"
)
cursor = db.cursor()
cursor.execute("SELECT VERSION()")
data = cursor.fetchone()
print("Database version: %s" % data)
except MySQLdb.Error as e:
print("Connection failed: %s" % str(e))
finally:
if db is not None:
db.close()