Python で MySQL に接続する

ここでは Python で MySQL に接続する方法についてご説明します。

MySQL の driver をインストールする

Python から MySQL データベースを使うのに、MySQL Connector という MySQL の driver を使います。

pip を使ってインストールしておいてください。

pip install mysql-connector-python

Python のパッケージのインストールがわからない方は「 Python の pip とは? 」をご覧ください。


Python で MySQL に接続する

MySQL Connector を使って、Python から MySQL データベースに接続してみましょう。

import mysql.connector

cnx = None

try:
    cnx = mysql.connector.connect(
        user='root',  # ユーザー名
        password='password',  # パスワード
        host='localhost'  # ホスト名(IPアドレス)
    )

    if cnx.is_connected:
        print("Connected!")

except Exception as e:
    print(f"Error Occurred: {e}")

finally:
    if cnx is not None and cnx.is_connected():
        conn.close()

上のコードを実行し、接続が成功すると次のように出力されます。

Connected!

1 行目で mysql.connector をインポートして、6 ~ 10 行目で、connect() メソッドに、MySQL データベースのユーザー名、パスワード、ホスト名を渡してコネクションを生成しています。

12 ~ 13 行目では、接続が成功して、コネクションの is_connected が True の時は Connected! と print しています。

try-except を使い、エラーが起きた時は、エラーの内容を print するようにしています。

finally でコネクションを close しています。 cnx = None と先に定義しておき、close する前に None でないことを確認しないと、例外が発生した場所によっては cnx が定義されておらず、NameError になる可能性があるので、このようにしています。


Python で MySQL のエラーの種類を特定する

try-except で MySQL Connector の Error のエラーコードをチェックすることによって、MySQL エラーの種類を特定することができます。

上のコードを変更して、ACCESS DENIED と ACCOUNT HAS BEEN LOCKED のエラーが起こった時に、別のエラーメッセージを print してみましょう。

import mysql.connector
from mysql.connector import errorcode

cnx = None

try:
    cnx = mysql.connector.connect(
        user='root',  # ユーザー名
        password='password',  # パスワード
        host='localhost'  # ホスト名(IPアドレス)
    )

    if cnx.is_connected:
        print("Connected!")

except mysql.connector.Error as e:
    if e.errno == errorcode.ER_ACCESS_DENIED_ERROR:
        print("User name or password is invalid.")
    elif e.errno == errorcode.ER_ACCOUNT_HAS_BEEN_LOCKED:
        print("This account is locked.")
    else:
        print(e)

except Exception as e:
    print(f"Error Occurred: {e}")

finally:
    if cnx is not None and cnx.is_connected():
        cnx.close()

上のコードを間違えたパスワードで実行すると、次のようなメッセージが出力されます。

User name or password is invalid.

2 行目で MySQL の errorcode をインポートし、16 ~ 22 行目で mysql.connector.Error の例外をキャッチし、エラー番号によって違うエラーメッセージを print しています。

MySQL のエラーコードはたくさん定義されているので、必要に応じてお使いください。


以上の方法で、MySQL データベースに接続できることを確認したら、Python からクエリーを実行してみましょう。

「 Python で MySQL を利用する 」の目次に戻る

© 2024 やさしい Python 入門