どうも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()
シンプルで良い!