2015/11/16更新

[Python] MySQLに接続してデータ操作を行う

このエントリーをはてなブックマークに追加      

こんにちは、@yoheiMuneです。
Python3系でMySQLに接続するには、PyMySQLがサクッと使えていいみたいですね。簡単に使い方をまとめておきたいと思います。

画像


目次




Githubページ

PyMySQLはピュアなPython製のMySQLクライアントで、Githubページは以下にあります。GithubのReadMeでは使い方の説明があります。

https://github.com/PyMySQL/PyMySQL/



インストール

パッケージ管理を使って簡単に導入することができます。
$ pip install PyMySQL



PyMySQLの使い方

PyMySQLを使ってみます。今回は以下のデータがMySQLに入っているとしてお話を進めたいと思います。

CREATE TABLE user (
    id INT(11) PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    age TINYINT UNSIGNED
);
INSERT user VALUES (1, 'John', 29);
INSERT user VALUES (2, 'Jesika', 20);
INSERT user VALUES (3, 'Cookie', 52);


モジュール読み込み, 接続, 切断

PyMySQLのモジュール読み込みから、MySQL接続 / 切断は以下のように行います。
# モジュール読み込み
import pymysql.cursors
# MySQLに接続する
connection = pymysql.connect(host='localhost',
                             user='user',
                             password='passwd',
                             db='sample',
                             charset='utf8',
                             # cursorclassを指定することで
                             # Select結果をtupleではなくdictionaryで受け取れる
                             cursorclass=pymysql.cursors.DictCursor)
# MySQLから切断する
connection.close()
ここでのポイントはcursorclassを指定することで、Dictionary形式で値を受け取れるようにすることです。これ便利です。
これでMySQLへの接続と、接続の切断ができました。


Select

Select処理は以下のように実装することができます。
# SQLを実行する
with connection.cursor() as cursor:
    sql = "SELECT id, name FROM user WHERE age >= 50"
    cursor.execute(sql)

    # Select結果を取り出す
    results = cursor.fetchall()
    for r in results:
        print(r)
        # => {'name': 'Cookie', 'id': 3}
また、sqlには置換文字列を指定することも可能です。
with connection.cursor() as cursor:
    # 置換文字列を指定(数値でも%sを指定するらしい)
    sql = "SELECT id, name FROM user WHERE name = %s AND age = %s"
    cursor.execute(sql, ("Cookie", 52))

    # Select結果を取り出す
    results = cursor.fetchall()
    for r in results:
        print(r)
        # => {'name': 'Cookie', 'id': 3}



Insert, Update

InsertとUpdateも行うことができます。
# Insert処理
with connection.cursor() as cursor:
    sql = "INSERT INTO user (id, name, age) VALUES (%s, %s, %s)"
    r = cursor.execute(sql, (4, "Shanky", 38))
    print(r) # -> 1
    # autocommitではないので、明示的にコミットする
    connection.commit()

# Update処理
with connection.cursor() as cursor:
    sql = "UPDATE user SET age = %s WHERE id = %s"
    r = cursor.execute(sql, (12, 1))
    print(r) # -> 1
    # autocommitではないので、明示的にコミットする
    connection.commit()
これで更新処理の実装もできました。



最後に

今回はPython3でMySQLに接続する方法をブログに書きました。PyMySQLを使えば簡単にMySQLにアクセスができてなかなか素敵だなと思います。今後のPythonを使う場合に色々と利用したいと思い、ブログに使い方など残した次第でした。

最後になりますが本ブログでは、フロントエンドのネタやPythonネタを中心に情報を発信しています。気になった方はぜひ、RSSTwitterをフォローして頂けますと幸いです ^ ^。

最後までご覧頂きましてありがとうございました!





こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。