end0tknr's kipple - web写経開発

太宰府天満宮の狛犬って、妙にカワイイ

mysqlclient ( MySQLdb ) for python3 による mysql 操作

https://pypi.org/project/mysqlclient/

python3 + mysql8 + centos7.9 の手習い。

目次

install mysqlclient ( MySQLdb )

mysqlclient は、インストール時に mysql_config を参照しますが、 「pip3 install mysqlclient」によるインストールでは、 「/bin/sh: mysql_config: command not found」エラーとなる為 mysqlclient-2.1.0.tar.gz を wget し、local install しています。

$ mkdir pip_packages
$ cd pip_packages
$ wget https://files.pythonhosted.org/packages/de/79/<略>/mysqlclient-2.1.0.tar.gz
$ tar -xvf mysqlclient-2.1.0.tar.gz

$ vi mysqlclient-2.1.0/site.cfg
  old) #mysql_config = /usr/local/bin/mysql_config
  new) mysql_config = /usr/local/mysql/bin/mysql_config
$ tar -xcvf mysqlclient-2.1.0.tar.gz mysqlclient-2.1.0

$ cd ..
$ sudo pip3 install --no-index --find-links=./pip_packages mysqlclient

$ sudo vi /etc/ld.so.conf
  /usr/local/mysql/lib   ## <--ADD
$ sudo ldconfig

試していませんが、以下でのインストールできたのかもしれません...

$ sudo su -
# export PATH="/usr/local/mysql/bin:$PATH"
# pip3 install mysqlclient

sample code of mysqlclient ( MySQLdb ) for python3

#!/usr/bin/python3
# -*- coding: utf-8 -*-
import MySQLdb

def main():
    db_conn = MySQLdb.connect(
        host='localhost',
        user='wordpress',
        passwd='wordpress',
        db='wordpress')
    db_cur = db_conn.cursor()

    sql = "select * from wp_users where id in (%s,%s,%s)"
    # sql = "select * from wp_users"

    try:
        db_cur.execute(sql,(1,2,3))
    except Exception as e:
        print(e)
        return
    
    # db_cur.execute(sql)

    ret_rows = db_cur.fetchall()
    # connection.commit()

    for row in ret_rows:
        print(row)
 
    db_cur.close()
    db_conn.close()
    

if __name__ == '__main__':
    main()