TL;DR
MySQL へ接続するモジュール mysqlclient を使うには、インポートの際に MySQLdb と記述する必要がある。
mysqlclient のインストール
MySQL と mysqlclient をインストールする。
brew install mysql
pip install mysqlclient
mysqlclient のインポート
import MySQLdb
インポートしたときに ModuleNotFoundError エラーが出る場合は、インポートしたときに「ModuleNotFoundError」になる場合の対処法を参考にするとよい。
Python DB API のバージョンを確認する
インポートが正しく動いたら、データベースのモジュールが PEP 249 に準拠しているか調べておこう。Python の扱うデータベース API は、PEP 249によって、API 仕様の統一がされている。
apilevel
データベースのモジュールが、PEP 249 に準拠しているか調べたい場合、apilevel を使う。apilevel は、サポートされているデータベース API レベルを示す文字列定数である。現在、文字列「1.0」と「2.0」のみが許可されている。
import MySQLdb
print(MySQLdb.apilevel)
# 2.0
2.0 と表示された。DB API 2.0 に準拠している。
データベース作成
次に、データベースを作る。sample というデータベースを作成してみよう。mysql をたたいた後で、create database を入れる。
mysql
create database sample;
データベースに接続しテーブルを作る
基本的なメソッドは次のとおり
connect
データベースに接続するために connect()
メソッドを使用します。このメソッドは、データベースへの接続を表すコネクションオブジェクトを返します。
db = MySQLdb.connect(host="localhost", user="username", passwd="password", db="sample")
ここで、"username"
と "password"
は実際の MySQL のユーザ名とパスワードに置き換えてください。
cursor
データベースに対して操作を行うためには、カーソルオブジェクトが必要です。これはコネクションオブジェクトの cursor()
メソッドを使用して取得できます。
cursor = db.cursor()
execute
SQL コマンドを実行するためには、カーソルオブジェクトの execute()
メソッドを使用します。
以下の例では、新しいテーブルを作成します。
cursor.execute("CREATE TABLE example (id INT, name VARCHAR(20));")
with 文の使い方
with 文を使うと、データベースの接続やカーソルの取得、そして処理が完了した後のクリーンアップを一連のブロック内で自動的に行うことができます。
with MySQLdb.connect(host="localhost", user="username", passwd="password", db="sample") as db:
with db.cursor() as cursor:
cursor.execute("CREATE TABLE example (id INT, name VARCHAR(20));")
with 文を使うことで、データベース接続が適切に閉じられ、リソースのリークを防ぐことができます。また、エラーが発生した場合でも、接続が適切に閉じられることが保証されます。
以上が mysqlclient(MySQLdb)の基本的な使用方法です。これらの手順を踏むことで、Python から MySQL に対する様々な操作を行うことが可能になります。さらに詳しく知りたい方は、公式ドキュメンテーションを参照してください。