MySQL Raspberry Pi Python

PythonでMySQLサーバへ接続しコマンドを実行

”Raspberry Piでシリアル通信を使って外部機器の情報を取得し、その情報をMySQLのデータベースのテーブルに追加したい”

Raspberry Piを使ってIoTのシステム構築をしているとこのようなことを実現したい場面があるかと思います。例えば、Modbusに対応している外部の機器から情報を取得し、MySQLでログ情報をテーブルに格納する場面などです。この記事では、PythonでMySQLサーバへ接続し、コマンドを実行する方法について紹介します。本記事では、Raspberry PiをMySQLサーバとして使用します。Raspberry Piの種類と購入先の情報を下の記事でまとめています。

pipでmysqlclientをインストール

この記事では、PythonでMySQLを使うために、mysqlclientを使用します。mysqlclientはpipでPythonに追加することが出来るのですが、事前に外部ライブラリ「python-dev」が必要になります。次の手順でインストールすることが出来ます。

STEP1. python-devのインストール

python-devのインストール

sudo apt-get install python-dev default-libmysqlclient-dev

STEP2. pipでmysqlclientのインストール

mysqlclientのインストール

pip install mysqlclient

pipをインストールしていない場合は、次の記事を参考にインストールして下さい。

PythonでMySQLコマンドを実行し、テーブルを作成する

事前準備として、MySQLサーバにログインし、userAというユーザを作成しておきます。パスワードはabcdとします。Pythonプログラムで記述することが必要になるので、これらの情報は控えておいて下さい。また、データベースを作成し、userAにそのデータベースのアクセス権を設定しておきます。コマンド例を載せておきます。

MySQLデータベース作成とユーザアクセス権設定

create user userA identified by 'abcd';

create database testpython;

grant all on testpython.* to userA;

では、Pythonを使って、上記データベースにテーブルを追加してみます。MySQLサーバに繋いでコマンドを実行すれば簡単なのですが、学習としてPythonプログラムからこれを実行してみます。作成するテーブル名はtablebyPythonとします。サンプルプログラムです。

import MySQLdb

connection = MySQLdb.connect(
    host = 'localhost',
    user = 'userA',
    passwd = 'abcd',
    db='testpython'
)

cursor = connection.cursor()

sql="""create table tablebyPython(ID int,NAME char(255),AGE int);"""
cursor.execute(sql)
cursor.close()

それではプログラムを実行してみましょう。次のコマンドで実行します。

mysqlbypython.pyの実行

python /ファイルがあるディレクトリ/mysqlbypython.py

下の画像のようになると思います。何も表示されていませんが、testpythonデータベースに、tablebyPythonテーブルが追加されているはずです。

Python MySQL実行結果

MySQLサーバにログインして確認してみましょう。次のコマンドを実行して下さい。

MySQLサーバへuserAでログイン

mysql -u userA -p

パスワード abcd を入力

Pythonプログラムで作成したテーブルの確認

use testpython;

show tables;

下の画像のように、テーブルtablePythonが表示されていれば成功です!

Pythonで追加したMySQLテーブルの確認

以上です。最後までお読みいただきありがとうございます。

-MySQL, Raspberry Pi, Python