MySQL-python
Django対応?
C-Extentionのみ
install
pip install MySQL-python
gcc要る
mysql-devel要る
コンパイル走る
demo
slave_connection = MySQLdb.connect(host = slave_host, user = username, passwd = password, port = slave_port)
slave_cursor = slave_connection.cursor(MySQLdb.cursors.DictCursor)
slave_cursor.execute("SHOW SLAVE STATUS")
slave_status = slave_cursor.fetchone()
slave_master_log_file = slave_status["Master_Log_File"]
seconds_behind_master = int(slave_status["Seconds_Behind_Master"])
cursorで DictCursor
指定したら、row['<column>']で通るようになる。
mysql-connector-python
Mysql製
pure-python版も有る(普通にいれるとそれっぽい)むしろC-Extentionは後発
最新版はpipで入らない
install
no longer support mysql-connector-python!
use mysql-connector-python-rf
but ...
pip install mysql-connector-python-rf
Collecting mysql-connector-python-rf
Downloading mysql-connector-python-rf-2.1.3.tar.gz (271kB)
100% |████████████████████████████████| 274kB 1.4MB/s
Installing collected packages: mysql-connector-python-rf
Running setup.py install for mysql-connector-python-rf ... error
usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
or: -c --help [cmd1 cmd2 ...]
or: -c --help-commands
or: -c cmd --help
error: option --single-version-externally-managed not recognized
----------------------------------------
solution
pip install --egg mysql-connector-python-rf
python3.6 (lambda)
pip install mysql-connector-python
demo
import mysql.connector
cnx = mysql.connector.connect(host='127.0.0.1',
user='root',
password='huga',
port='3306',
database='test')
cur = cnx.cursor(buffered=True, dictionary=True)
cur.execute('show slave status')
row = cur.fetchone()
row['Seconds_Behind_Master']
# row[cols.index('Seconds_Behind_Master')]
普通はrow['%Column_name%']でいい感じにして欲しいときは、cursor開くときに dictionary=true
を指定する。
for .. in cur: 文で回すサンプルもあるが、配列(タプル)のインデックス順にだしてるだけ、select文でカラム絞りしてればいいけど。
connection.cmd_query()というのもあるけど、一発コマンドでconnection切れてしまう臭い。