2013年1月29日火曜日

python3.3 から mysql5.5 へアクセスする

mysql-connector-pythonをインストールする


python3.3からmysql5.5のデータにアクセスする
mysql-connector-pythonをインストールする

環境


Ubuntu Quantal Quetzal 12.10 on VirtualBox 4.2.6
pythonは /opt/python3.3.0/bin/python3.3に、自前でビルドしてインストールしてある

$ uname -a
Linux xubuntu-vbox 3.5.0-22-generic #34-Ubuntu SMP Tue Jan 8 21:47:00 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

$ mysql --version
mysql  Ver 14.14 Distrib 5.5.29, for debian-linux-gnu (x86_64) using readline 6.2

$ python -V
Python 3.3.0



mysql-connector-pythonのインストール


distributeをインストール
pipをインストール
mysql-connector-pythonをインストール

$ wget http://pypi.python.org/packages/source/d/distribute/distribute-0.6.34.tar.gz
$ tar zxvf distribute-0.6.34.tar.gz
$ cd distribute-0.6.34

$ sudo /opt/python3.3.0/bin/python3.3 setup.py install
$ ls /opt/python3.3.0/bin/

$ sudo /opt/python3.3.0/bin/easy_install-3.3 pip
$ ls /opt/python3.3.0/bin/

$ sudo /opt/python3.3.0/bin/pip-3.3 install mysql-connector-python


こんなデータベースがあるとする
mysql> select * from tb1;
+----------+--------------------------------+------+
| id       | name                           | age  |
+----------+--------------------------------+------+
| K801     | Pythonista                     |   21 |
+----------+--------------------------------+------+


pythonからMySQLのデータを読み出す


import mysql.connector
connect = mysql.connector.connect(db="db1", host="localhost", port=3306, user="db1usr", passwd="1234")

cur=connect.cursor()
cur.execute('select * from tb1')
rows = cur.fetchall()
for row in rows:
    print(row)

cur.close()
connect.close()


pythonからMySQLへデータを書き込む


import mysql.connector
connect = mysql.connector.connect(db="db1", host="localhost", port=3306, user="db1usr", passwd="1234", charset="utf8")

cur = connect.cursor()
stmt = ("INSERT INTO tb1(id, name, age) " "VALUES(%s, %s, %s)")
data = ('K803', 'pythonia', 23)
cur.execute(stmt, data)

connect.commit()

cur.close()
connect.close()

参考


MySQL :: MySQL 5.5 Reference Manual :: 22.6.4.3 Inserting Data Using Connector/Python
http://dev.mysql.com/doc/refman/5.5/en/myconnpy_example_cursor_transaction.html

0 コメント: