この記事でPythonプログラムからMySQLデータベースにアクセスする方法について公式ドキュメントの抜粋をしたが、事前準備などで使うMySQLコマンドラインの操作を備忘録としてまとめておく。
MySQLユーザーとデータベースの作成
MySQLをrootで起動する。シェルからパスワードを指定する場合は以下。(パスワードが丸見えになる)
$ sudo mysql -u root -ppasswd
もしくは、以下を実行。(パスワードは表示されない)
$ sudo mysql -u root -p
MySQLコマンドラインで、専用ユーザ(bmsuser)を作成する。
create user bmsuser identified by 'passwd';
新しいデータベース(liionbms)の作成。
create database liionbms;
専用ユーザ(bmsuser)の、新しいデータベース(liionbms)へのアクセス権限を設定する。
grant all privileges on liionbms.* to bmsuser;
テーブルの作成
新しく作ったユーザ(bmsuser)で接続し直す。
$ mysql -u bmsuser -ppasswd
テーブルの作成。
create table ivdata (ts timestamp not null primary key, ch1_i float, ch1_v float, ch2_i float, ch2_v float, chg_i float, chg_v float, flags tinyint);
テーブルにカラムを追加/削除する
まずはSHOW COLUMNで現状のテーブルを確認。
mysql> show columns from ivdata;
+-------+-----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-----------+------+-----+---------+-------+
| ts | timestamp | NO | PRI | NULL | |
| ch1_i | float | YES | | NULL | |
| ch1_v | float | YES | | NULL | |
| ch2_i | float | YES | | NULL | |
| ch2_v | float | YES | | NULL | |
| chg_i | float | YES | | NULL | |
| chg_v | float | YES | | NULL | |
| flags | tinyint | YES | | NULL | |
+-------+-----------+------+-----+---------+-------+
8 rows in set (0.01 sec)
ALTER TABLEでch2_vの後ろにch3_iとch3_vを追加する。
mysql> alter table ivdata add ch3_i float after ch2_v, add ch3_v float after ch3_i;
Query OK, 0 rows affected (0.21 sec)
再度SHOW COLUMNでテーブルを確認。ちゃんと指定場所にカラムが追加されている。
mysql> show columns from ivdata;
+-------+-----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-----------+------+-----+---------+-------+
| ts | timestamp | NO | PRI | NULL | |
| ch1_i | float | YES | | NULL | |
| ch1_v | float | YES | | NULL | |
| ch2_i | float | YES | | NULL | |
| ch2_v | float | YES | | NULL | |
| ch3_i | float | YES | | NULL | |
| ch3_v | float | YES | | NULL | |
| chg_i | float | YES | | NULL | |
| chg_v | float | YES | | NULL | |
| flags | tinyint | YES | | NULL | |
+-------+-----------+------+-----+---------+-------+
10 rows in set (0.00 sec)
ちなみに、場所を指定しなくて良ければカラムの追加のSQL文はもう少し簡単になる。(一番後ろに追加される)
alter table ivdata add (ch4_i float, ch4_v float);
間違えて追加したカラムをALTER TABLEで削除する。
alter table ivdata drop column ch4_i, drop column ch4_v;
まとめ
MySQLデータベースにデータを記録出来るようにする事前準備としては、
- ユーザー作成
- データベース作成
- テーブル作成
の3つだろう。既存のユーザーを使い回せばユーザー作成は省略可能。
一度テーブルを作ってしまえば、下記記事のようにPythonプログラムから簡単にデータの追加は出来るようになる。
テーブル作成などはPythonコードから実行しようと思えば出来ないこともないが、MySQLコマンドラインから実行した方が簡単だと思う。PythonプログラムとMySQLコマンドラインの使い分けが使いこなしのコツかもしれない。
コメント