Python: MySQL へ接続するモジュール mysqlclient(MySQLdb)の使い方

TwitterFacebookHatena
  • 公開:2021-12-02
  • 更新:2023-10-26
  • 文章量:1790
  • Python

TL;DR

MySQL へ接続するモジュール mysqlclient を使うには、インポートの際に MySQLdb と記述する必要がある。

mysqlclient のインストール

MySQL と mysqlclient をインストールする。

brew install mysql
pip install mysqlclient

mysqlclient · PyPI

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 に対する様々な操作を行うことが可能になります。さらに詳しく知りたい方は、公式ドキュメンテーションを参照してください。

Python: MySQL へ接続するモジュール mysqlclient(MySQLdb)の使い方