P337 PythonからのMySQL接続

●Connector/Python
 Connector/Pythonには100%Pytonで記述された「Pure Python版」と、C言語C++で実装されている「C拡張版」が存在する。
 Pure Python版はPythonの実行環境さえあれば利用可能である。
 C拡張版はインストールする必要はあるが、パフォーマンスが良い。
 Connector/Pythonの他にもライブラリは存在するが、Oracle社が公式にサポートしているのはConnector/Phthonだけである。

●Connector/Pythoが対応しているMySQLPythonのバージョン
MySQL :: MySQL Connector/Python Developer Guide :: 3 Connector/Python Versions

●Connector/Pythonのインストール方法
[pipの場合]

pip install mysql-connector-python

[Anacondaの場合]

conda install -c anaconda mysql-connector-python

[それ以外の場合]
https://dev.mysql.com/downloads/ にアクセスし、「Connector/Python」をクリックし、その後パッケージをインストール

●サンプルコード

import mysql.connector

config = {
  'user' : 'hogehoge',
  'password' : 'password',
  'host' : '127.0.0.1',
  'database' : 'mysql'
}

try:
  conn = mysql.connector.connect(**config)
  print(conn.is_connected())

except mysql.connector.Error as err:
  print("VendorError:", err.errno)
  print("SQLState:", err.sqlstate)
  print("SQLException:", err.msg)

else:
  conn.close()

●主なエラー一覧
詳細は書籍に記載有

●MySQL8.0.11で発生しがちなエラー(SSL通信関連)について
 Connector/Pythonはバージョン8.0.11以降、C拡張版がデフォルトで利用される。これにより、リモートホストからMySQLサーバーに接続する際に、SSL暗号化通信が有効化される。
 SSL暗号化通信を無効化する事でエラーを解消するには、コネクション生成時に以下のパラメータを指定すれば良い。
  C拡張版の場合:ssl_disabled=True
  Pure Pythonの場合:use_ure=True