Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
91
Help us understand the problem. What is going on with this article?
@mitch0807

Python3からMySQL繋ぐ時は、いろいろあるけどとりあえずPyMySQLにしとこうや

More than 1 year has passed since last update.

どうもmiyachi(@_38ch)です
Flask+MySQLでアプリを作ろうとしてるんですが、Python3でMySQLに接続するためのパッケージがいろいろあって、どれがよくてどれが悪いのかよくわからない。
いろいろ使ってみようとした結果、PyMySQLが個人的に一番シンプルで使いやすかったので、使い方書いておきます。

「Python3 MySQL」で英語設定でググって一番最初に出てくる、stackoverflowで比較されていた中から選びました。そこでの紹介文を単純に翻訳すると

  • ピュアPython (Pure python)
  • mysql-connectorより速い (Faster than mysql-connector)
  • pymysql.install_as_MySQLdb()を呼び出せば、MySQLdbとほぼ完全な互換性がある (Almost completely compatible with MySQLdb, after calling pymysql.install_as_MySQLdb())

インストール

pip install PyMySQL

DB情報設定

import pymysql.cursors

conn = pymysql.connect(host='host_name',
                    user='user_name',
                    db='db_name',
                    charset='utf8mb4',
                    cursorclass=pymysql.cursors.DictCursor)

クエリを書いて情報を取得する

SELECT

try:
    with conn.cursor() as cursor:
        sql = "SELECT user_id, user_name FROM users WHERE user_id = %s"
        cursor.execute(sql, ('123',))
        result = cursor.fetchall()
        print(result)
finally:
    conn.close()

printの結果

{'user_id': 123, 'user_name': 'Jon Doe'}

INSERT

try:
    with conn.cursor() as cursor:
        sql = "INSERT INTO user (user_name, email) VALUES (%s, %s)"
        cursor.execute(sql, ('Jon Doe', 'sample@gmail.com'))

    # オートコミットじゃないので、明示的にコミットを書く必要がある
    conn.commit()
finally:
    conn.close()

シンプルで良い!

関連ページ

宣伝

プライベートでWalicaという複雑な割り勘のサポートサービスを作っているのでもしよかったら、使ってみてください。
Custom Preset.png

91
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
mitch0807
猫と銭湯が好きな文系出身若手エンジニアです。 大学ではコンピューターサイエンス学んでないので、お手柔らかにお願いします。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
91
Help us understand the problem. What is going on with this article?