PythonでMySQLを使う | moskomule log

PythonでMySQLを使う

現在開発しているものはScalaで前処理を行っているので,本番の処理も本当は全部Scalaで書ければよかったのだけれども,そうは問屋が卸さず,種々の原因によりPythonが必要になってしまった. これなら最初から全部Pythonでよかったのでは,とも思うけれど,PythonはJupyterで小さなものを色々弄るのには使うものの,大きいものをPythonで書いた経験が無いので心配.型が違う,という注意が沢山出そうだ.

ともかく,そのためにPythonからMySQLを扱う必要が出てきた.Pythonists3は新しいもの好きなのか,いまやNoSQLを使うのがトレンドなのか,MySQL周りの情報が少ないのだが,pymysqlを使うことに落ち着いた.


connection = pymysql.connect(host="HOSTNAME",
                            user="USERNAME",
                            password="PASSWORD",
                            db="DB_NAME",
                            charset='utf8',
                            cursorclass=pymysql.cursors.DictCursor) #1

with connection.cursor() as cursor:

    sql = "SELECT name FROM table WHERE id=%s"
    cursor.execute(sql, (900))

    results = cursor.fetchall()
    for r in results:
        b = r['name']
        print(bytes.decode(b)) #2

#1を指定することで,返ってくる結果がdict形式になって分かりやすい.

最後,#2でnameに相当する列がvarbinaryであったので,文字列に変換するのにbytes.decode()が必要だった.とりあえずこれで一件落着.

comments powered by Disqus