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 からクエリーを実行してみましょう。