Raspberry Pi & Python 開発ブログ ☆彡

Raspberry PiとPythonの基本的な使い方をわかりやすく解説。初心者、入門者必見!!

MySQLデータベース:Pythonブログラムから操作する

mysqldb python code

ブログ管理者のP.Hです!

今回は、pythonからMySQLから操作する方法を紹介します。PyMySQLというモジュールを使って操作していきます。

それでは、PyMySQLの使い方を紹介します。

PyMySQLのインストール

下記のコマンドでPyMySQLモジュールをインストールします。

$ pip install PyMySQL

MySQLテータベースを操作する

基本的な操作を下記に記載しました。コード内のコメントを参考にしてください。testdbデータバースは下記ブログで既に作成済みです。testdbデータベースを作成した状態で下記のpythonコードを実行してください。

import pymysql.cursors

# データベースに接続
conn = pymysql.connect(host='127.0.0.1', # Raspberry PiのIPアドレスではないので注意
                    port=3306, # ポート番号
                    user='root', # ユーザー名
                    passwd='password', # パスワード
                    db='testdb', # データベース名
                    charset='utf8mb4', # 文字コード 
                    cursorclass=pymysql.cursors.DictCursor, # 結果をdictで受け取る 
                    autocommit=False) # オートコミットの設定
# カーソル生成
cursor = conn.cursor() 
# testテーブルが既に存在すれば削除
cursor.execute("DROP TABLE IF EXISTS test") 
# testテーブルの作成
cursor.execute("""CREATE TABLE IF NOT EXISTS test (
                id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
                name VARCHAR(128) NOT NULL)
                ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci""")
# データをインサート                
cursor.execute("INSERT INTO test VALUES (1, 'AAA')")
cursor.execute("INSERT INTO test VALUES (2, 'BBB')")
cursor.execute("INSERT INTO test VALUES (3, 'CCC')")
cursor.execute("INSERT INTO test VALUES (4, 'DDD')")

# データを更新
cursor.execute('UPDATE test SET name=%s WHERE id=%s', ('BBBupdate', 2))

# データを削除
cursor.execute('DELETE FROM test WHERE id=3')

# データベースに反映
conn.commit()

# データを取得
cursor.execute('SELECT * FROM test')
fetch = cursor.fetchall()

print(fetch)

# 終了処理
cursor.close()
conn.close()

データベース接続の設定パラメータは、下記ブログのMySQL Hostname以下4項目と同じ設定にしてください。 また、commitをした時点でデータベースに反映されます。commit漏れには注意してください。

www.raspberrypirulo.net

実行後、データベースは以下のようになります。

database result after exec python

SQL文をマスターする必要がありますが、一度データベースを触ったことがある人であれば、Pythonでもすぐにコードが書けると思います。最近はデータベースを使う頻度は高いと思いますので、習得しておくと役に立ちます。