【Python, MySQL】PyMySQLの基本的な使い方

今回はPythonから簡単にMySQLの操作が行えるPyMySQLの基本的な使い方についてメモしておきます。

バージョン等

  • Python 3.6.0

前準備

PyMySQLのインストール

まず、PyMySQLをインストールします。

pipで簡単にインストールできます。

pip install PyMySQL

mysqlのテーブルの作成

以下のようなテーブルがあるDBがあると仮定しています。
PyMySQLのREADME.mdにあるテーブルと同じです。

CREATE TABLE users (
    id int(11) NOT NULL AUTO_INCREMENT,
    email varchar(255) COLLATE utf8_bin NOT NULL,
    password varchar(255) COLLATE utf8_bin NOT NULL,
    PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
AUTO_INCREMENT=1 ;

PyMySQLの基本的な使い方

ドキュメントに書いてあるサンプルを使って基本的な書き方について紹介します。

データベースへの接続

では、まずデータベースに接続します。

import pymysql.cursors

connection = pymysql.connect(host='*******',
                             user='*******',
                             password='*******',
                             db='*******',
                             charset='utf8',
                             # 結果の受け取り方の指定。Dict形式で結果を受け取ることができる
                             cursorclass=pymysql.cursors.DictCursor)

最後のcursorclassで結果をDict形式で取得することができます。
例えば、 cursorclass=pymysql.cursors.Cursor と設定するば,taple形式で結果を取得できます。

Insert

tableに新しいレコードをインサートします。

with connection.cursor() as cursor:
    sql = "INSERT INTO users (email, password) VALUES (%s, %s)"
    cursor.execute(sql, ('webmaster@python.org', 'very-secret'))

connection.commit()

上記のコードでは sql にsql文を書いて、それを cursor.execute によって実行しています。

このコードでインサートができました。

Select

では、インサートしたデータをSELECT文で取得してみます。

with connection.cursor() as cursor:
    sql = "SELECT id, password FROM users WHERE email=%s"
    cursor.execute(sql, ('webmaster@python.org',))
    result = cursor.fetchone()
    print(result)

先程インサートしたデータを取得できたと思います。

今回は1つレコードを取得しましたが、
もし、複数のレコードを取得したければ、

fetchall()
などを使えば複数のレコードを取得できます。

終わりに

今回はPythonからMySQLを簡単に使えるPyMySQLを紹介しました。

PythonからMySQLを用意に使えるので便利です。

参考文献

基礎からのMySQL 第3版 (基礎からシリーズ)
タイトルとURLをコピーしました