2013年11月10日日曜日

Python 3.3.2でmysql-connector-pythonを試す

Python3.3.2でmysql-connnector-pythonを試してみました。

1. pipでインストール

pip install mysql-connector-python
pipではインストールできませんでした。ドキュメントでは3.1は対応しているようなのですが無理っぽいですね。
$ pip install mysql-connector-python
途中省略
error: invalid command 'egg_info'

----------------------------------------
Cleaning up...
Command python setup.py egg_info failed with error code 1 in /tmp/pip_build_user/mysql-connector-python
Storing complete log in /path/to/.pip/pip.log

2. MySQL Connector/Pythonを確認

ChangeLogを確認したところ
1.1.0の開発版からprint()文に変更されているので、Python3系の対応が行われているっぽい
http://dev.mysql.com/doc/relnotes/connector-python/en/news-1-1-0.html

いずれにせよ安定版ではないので、少しでもバグフィックが多い最新バージョンの1.1.2をインストールしてみます。
Changes in MySQL Connector/Python 1.1.2 (2013-10-23)

ちなみにまだリリースされていない1.1.3の情報では、sjisなどバックスラッシュ(0x5c)問題があるようなので、sjisを扱う場合は導入はまだ難しいようです。
Changes in MySQL Connector/Python 1.1.3 (Not yet released)

3. ソースコードでインストール

ソースコードはこちらから http://dev.mysql.com/downloads/connector/python/
curl -L -o mysql-connector-python-1.1.2.tar.gz "http://dev.mysql.com/get/Downloads/Connector-Python/mysql-connector-python-1.1.2.tar.gz/from/http://cdn.mysql.com/"
tar zxfv mysql-connector-python-1.1.2.tar.gz
mysql-connector-python-1.1.2
python setup.py install

4. 動作確認

$ python
Python 3.3.2 (default, Nov  3 2013, 19:17:12)
[GCC 4.7.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import mysql.connector
>>> config = {
...    'user': 'username',
...    'password': 'password',
...    'host': '127.0.0.1',
...    'database': 'databasename',
... }
>>> cnx = mysql.connector.connect(**config)
>>> cur = cnx.cursor(buffered=True)
>>> cur.execute("SHOW STATUS LIKE 'Uptime'")
>>> print(cur.fetchone())
('Uptime', '678')
>>> cur.close()
True
>>> cnx.close()
簡単な動作確認ですが、動作しました。