MySQL Connector/Python 2.1をAmazon Linuxにインストールする
PythonからMySQLに接続するためのドライバーは多数存在します。 今回はMySQLを開発しているOracle社謹製のConnector/Pythonを使い
- ピュアPython版
- C拡張版
のドライバーをソースコードからAmazon Linux上のPython2.7にインストールする方法を紹介します。
MySQL Connector/Python の特徴
- Python DB-API(2.0)互換
- Oracle 謹製でアクティブに開発されている
- 最新のMySQL 5.7を含めたMySQLのほとんどの機能が利用可能
- Python2/3の両方に対応
- ピュアPythonで実装されているため、インストールが楽
- 大きなリザルトセットを返すクエリーで性能面が優れたC拡張版も存在(2.1.1から)
MySQL Connector/Python のバージョンの違い
Connector/Pythonのバージョンによって以下のような違いが存在します。
Connector/Python Version | MySQL Server Versions | Python Versions | Connector Status |
---|---|---|---|
2.2 | 5.7, 5.6, 5.5 | 3.3 and higher, 2.7 | Developer Milestone |
2.1 | 5.7, 5.6, 5.5 | 3.3 and higher, 2.7, 2.6 | Recommended version |
2.0 | 5.7, 5.6, 5.5 | 3.3 and higher, 2.7, 2.6 | GA, Supported |
1.2 | 5.7, 5.6, 5.5 (5.1, 5.0, 4.1) | 3.1 and higher, 2.7, 2.6 | GA, Supported |
参照 https://dev.mysql.com/doc/connector-python/en/connector-python-versions.html
今回は推奨されている 2.1 系をインストールします。
Developer Milestoneの2.2系ではX Protocolを利用するための X DevAPI対応、Protocol Buffers 3対応など、新しい機能が盛り込まれています。 2.2 系のインストールは別の機会に紹介予定です。
動作検証環境
以下の環境でインストールを行いました。
- MySQL Connector/Python : 2.1.6
- Linux : Amazon Linux 2017.03(AMI ID :amzn-ami-hvm-2017.03.0.20170417-x86_64-gp2 (ami-b968bad6))
- Python : Python 2.7
Python2.7の環境を用意
今回はvirtualenv でPython 2.7用の環境を構築します。
$ virtualenv mysql New python executable in mysql/bin/python2.7 Also creating executable in mysql/bin/python Installing setuptools, pip...done. $ source mysql/bin/activate (mysql)$
ソースコードの取得
今回はソースコードからインストールします。 ソースコードは
- MySQLサイト
- GitHubサイト
から取得可能です。
MySQL サイト
以下の URL からダウンロードします。
https://dev.mysql.com/downloads/connector/python/
ダウンロードするためには、本サイトへのログインが必要です。
Generally Available(GA) Release → Platform Independent を選ぶと、ソースコードを取得できます。
mysql-connector-python-2.1.6.tar.gz というファイル名でダウンロードできます。 ダウンロードしたファイルはAWSのEC2サーバーに転送して下さい。
GitHub サイト
以下の URL から git clone します。
https://github.com/mysql/mysql-connector-python
$ git clone https://github.com/mysql/mysql-connector-python.git $ cd mysql-connector-python $ git tag 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.2.0 2.2.1-m2 2.2.2 2.2.3 init $ git checkout 2.1.6 HEAD is now at 94f2135... Add Python 3.4 and 3.5 as supported versions $
git がインストールされていない場合は $ git install -y git でインストールして下さい。
ピュアPython版のインストール
次のページの手順に従いインストールします。
https://dev.mysql.com/doc/connector-python/en/connector-python-installation-source.html
Pythonでself-contained にかかれているため、インストールではまる可能性は低いはずです。
$ python setup.py install ... running install_egg_info Writing /home/ec2-user/mysql/lib/python2.7/site-packages/mysql_connector_python-2.1.6-py2.7.egg-info
インストールの確認
$ python -c 'import mysql.connector' $
インストールが確認できました。
C拡張版のインストール
次のページの手順に従いインストールします。
https://dev.mysql.com/doc/connector-python/en/connector-python-cext.html
必要なパッケージのインストール
インストールでは以下のパッケージに依存します
- mysql
- mysql-devel
- gcc
- gcc-c++
これらをまとめてインストールします
$ sudo yum install -y mysql mysql-devel gcc gcc-c++
インストール
mysql_config のパスを --with-mysql-capi
引数に渡します。
$ whereis mysql_config mysql_config: /usr/bin/mysql_config /usr/share/man/man1/mysql_config.1.gz $ python setup.py install --with-mysql-capi=/usr/bin/mysql_config ... running install_egg_info Writing /home/ec2-user/mysql/lib64/python2.7/site-packages/mysql_connector_python-2.1.6-py2.7.egg-info
インストールの確認
$ python -c "import _mysql_connector" $
インストールが確認できました。
C拡張版インストール時のトラブルシュート
C拡張版のインストールははまりポイントが多数あります。エラーメッセージを例に、解決方法を紹介します
mysql_config がインストールされていない
mysql_config がインストールされていない場合、whereis コマンドの結果が空です
$ whereis mysql_config mysql_config: $
mysql をインストールして対応します
$ sudo yum install -y mysql $ whereis mysql_config mysql_config: /usr/bin/mysql_config /usr/share/man/man1/mysql_config.1.gz
MySQL C API location is invalid; was /usr/bin/mysql_config というエラーが発生
$ python setup.py install --with-mysql-capi=/usr/bin/mysql_config ... running build_ext MySQL C API location is invalid; was /usr/bin/mysql_config
mysql-devel パッケージをインストールして対応します。
$ sudo yum install -y mysql-devel
unable to execute 'gcc': No such file or directory というエラーが発生
$ python setup.py install --with-mysql-capi=/usr/bin/mysql_config ... unable to execute 'gcc': No such file or directory error: command 'gcc' failed with exit status 1
gcc パッケージをインストールして対応します。
$ sudo yum install -y gcc
gcc: error trying to exec 'cc1plus': execvp: No such file or directory というエラーが発生
$ python setup.py install --with-mysql-capi=/usr/bin/mysql_config ... gcc: error trying to exec 'cc1plus': execvp: No such file or directory error: command 'gcc' failed with exit status 1
gcc-c++ パッケージをインストールして対応します。
$ sudo yum install -y gcc-c++
まとめ
今回はMySQL Connector/Python 2.1系のピュアPython版とC拡張版のAmazon Linuxへのインストール方法を紹介しました。 C拡張版は性能面でのメリットがありますが、その分、ピュアPython版に比べてインストールは煩雑です。
Python版とC拡張版の性能比較や新機能がいろいろ盛り込まれてた2.2系のインストールについても機会があれば調査したいと思います。