”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のインストール
sudo apt-get install python-dev default-libmysqlclient-dev
STEP2. pipでmysqlclientのインストール
pip install mysqlclient
pipをインストールしていない場合は、次の記事を参考にインストールして下さい。
PythonでMySQLコマンドを実行し、テーブルを作成する
事前準備として、MySQLサーバにログインし、userAというユーザを作成しておきます。パスワードはabcdとします。Pythonプログラムで記述することが必要になるので、これらの情報は控えておいて下さい。また、データベースを作成し、userAにそのデータベースのアクセス権を設定しておきます。コマンド例を載せておきます。
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()
それではプログラムを実行してみましょう。次のコマンドで実行します。
python /ファイルがあるディレクトリ/mysqlbypython.py
下の画像のようになると思います。何も表示されていませんが、testpythonデータベースに、tablebyPythonテーブルが追加されているはずです。
MySQLサーバにログインして確認してみましょう。次のコマンドを実行して下さい。
mysql -u userA -p
パスワード abcd を入力
use testpython;
show tables;
下の画像のように、テーブルtablePythonが表示されていれば成功です!
以上です。最後までお読みいただきありがとうございます。