Hobby Lab 趣味のモノ作り実験のサイトです。
Software OS RaspberryPi MySQL
1.MySQLを使う
 (1)MySQLを使用する理由
 (2)データベース用語
 (3)扱うデータ構造
 (4)データベース操作アプリ
2.データベース作成
 (1)ユーザ登録
 (2)データベース作成
 (3)テーブル作成
 (4)自動処理カラムの設定
 (5)その他カラムの設定
3.データ型
 (1)整数型
 (2)小水点型
 (3)ビット値型

Sf:OS関係
SfO:Mint 関係
 PCへMint導入
 アプリ導入
 その他1
 アイコンを作る
SfO:Ubuntu 関係
 PCへUbuntu導入
 アプリ導入
SfO:RaspberryPi 関係
はじめに
 RaspberryPiへOS導入
 アプリ導入
 Programming
シェル・コマンド関係
 LXTerminal
 sed
 i2ctools
I/O・アプリ関係
 RealVNCとViewer
 IO動作確認
 MySQL
 Python
 raspberrypiハード
Sf:Server 関係
SfS:レンタルサーバー
 CORE-X
SfS:Windowsサーバー
 XAMPPの概要と導入
 Note XAMPP
 Note XAMPP Err
 Note Apache
 Note PHP
 Note MyQSL
Sf:Programming関係
C 関係
 C言語でプログラムミング
Python 関係
はじめに
 RaspberryPi開始
 Windows開始
共通事項
 プログラミングNote
 パッケージ導入 pip
 標準ライブラリ
 Serialライブラリ
 SMBusライブラリ
HTML関係
 開始とNote
Sf:IDE 開発環境
SfI:STM32
 STM32CubeIDEでプログラム
 HALと直接レジスター操作の速度
SfI:CH32
 MounRiver Studioでプログラム
SfI:Arduino
各ボード毎の設定
 Uno 設定
 Mega2560 設定
 DUE_CH340 設定
 ESP_WROOM02 設定
 ESP12F_D1mini 設定
 ESP32 設定
 CH32V 設定
ライブラリー
 OneWire使い方
その他
 日本語リファレンス(外部リンク)
 WiFi Macアドレスを調査
Sf:AP アプリ関係
SfA:エディタ
SfA:回路図CAD
SfA:回路シミュレータ
 シミュレーションの設定
 色の設定
 電源設定設定
SfA:リモートソフト
Sf:Pt プロトコル関係
SfPt:MODBUS
Sf:Otgers その他

1.MySQLを使う

  ※ 注意 MySQLの導入を先にしておいてください。

 (1)MySQLを使用する理由

RaspberryPiで遠隔監視装置を作成するにあたり、RaspberryPiの情報処理をpythonで行うが 現状を示す情報と、蓄積情報の2種類をホームページからWebブラウザで見れるようにしたいと考えている。
ホームページを作成するには条件を付けた表示をさせたいので、HTMLにJAVAスクリプトまたはPHPを使用する予定。
そこでpythonからJAVAスクリプトまたはPHPにデータを渡す必要がある。
直接渡す方法としてはFlaskと言うpythonモジュールを使用する方法がある。
しかし蓄積データの記録先としてMySQLを使用することは決めており、現状を示す情報もMySQLを使用しデータの受渡をすれば、 プログラムを簡単にすることが出来るだろうと言うことで全てをMySQL経由で行うことで進める。
ただし現状のデータで 約10秒間隔のデータ記録が必要となる。このデータの受渡に支障が無いか確認していく。

なお以下紹介ページは MySQL のページ https://dev.mysql.com/ 以下へリンクしています。
MySQLについてMySQLの歴史  MySQL8.0のリファレンス も参照ください。

 (2)データベース用語

データベースの構造には『テーブル』『カラム』『レコード』『フィールド』が有る。
マイクロソフトのエクセルと比較すると簡単に説明が出来る。
テーブル
 エクセルなどで言う シート に該当するのが テーブル です。
カラム
 エクセルなどで言う 列 に該当するのが カラム です。
レコード
 エクセルなどで言う 行 に該当するのが レコード です。
フィールド
 エクセルなどで言う セル に該当するのが フィールドです。

 (3)扱うデータ構造

遠隔監視装置に使用するデータとして『現状を示すデータ』『蓄積データ』の2種類のデータが有る。
現状を示すデータ
温度は1分周期で取得し、その他は10秒周期で現場機器からデータを取り込みMySQLのデータベースに1時間分を仮記録する。
またこの情報は
 ・カラム数は 37
 ・HTMLで情報を表示させる。
 ・1時間毎にこのデータを集約して次の蓄積データとして加工する。
 
蓄積データ
蓄積データは1時間毎に(2)のデータを集計しMySQLに記録します。
 ・カラム数は 67
 

 (4)データベースの操作アプリ

データベースの作成方法は『 PHP My Admin 』を使用する。
使用するにはWebブラウザに http://192.168.10.114/phpmyadmin/ と入力して実行すると右図の様な PHP My Admin ページが表示される。
ログインすると下の様な図になる。




2.データベースの作成

 設定は1項で説明したデータベースの操作アプリ『 PHP My Admin 』を使用する。
 また各登録は1例だけを記載する

 (1)ユーザ登録

ユーザ登録には下記情報を登録します。 登録するユーザ名は仮に『RasPyt』と『PasJav』にします。
またこの2件のユーザはデータベース権限として全てのデータ追加・変更等の権限を持つことにする。
下図のように『ユーザアカウント』のタブを選択し『ユーザアカウントを追加する』

下図のように『ログイン情報』を入力する。
入力が終われば下の項目『ユーザアカウント専用データベース』の画面を通過し下の項目『グローバル特権』へ移動させる。

下の項目『グローバル特権』で『□データ』の項目全部にチェックを入れ一番右下に表示されている『実行』を左クリックする。

実行するとコンソールから入力した場合の文が表示される。
内容は下記のとおり。
CREATE USER 'Raspyt'@'%' IDENTIFIED VIA mysql_native_password USING '***';GRANT SELECT, INSERT, UPDATE, DELETE, FILE ON *.* TO 'Raspyt'@'%' REQUIRE NONE WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;

全てのユーザを入力し『ユーザアカウント』のタブを選択すると下記の様に2件のユーザが追加された事が判る。


 (2)データベース作成

仮のデータベース名を『SolarPwdb』とする。
下図の赤枠の部分にデータベース名を入力し、『作成』を実行する。

初めてデータベースを作成したので、このデータベースにはテーブルが無いとメッセージが出る。

次にテーブルを作成していく。

 (3)テーブル作成

テーブル名 soltbtp カラム数は37
テーブル名を登録『実行』すると下図の画面になり各カラムの設定が始まります。

※カラム数を 52 とした場合は下記のメッセージが出てるので、52以降をカラムの追加で処理するかコマンドラインでテーブルの作成やカラムの設定を行う必要がある。


 (4)自動処理カラムの設定

このテーブルの レコード には INSERT 時に自動的に処理したい カラム が2つあります。
それは『No』と『時刻』です。
No

カラム名 tpno を入力しデータ型については ①からメニューが表示されます。
②の SMALLINT を選択、長さは 4 を入力します。
自動的に数値を1つ加算したいので、マウスを③のA_I下□をチェックするとインデックス欄が『PRIMARY』になります。

時刻
カラム名 tpda を入力しデータ型については DATETIME とします。

 (5)その他のカラム設定

その他のカラムは数値データと有り無しのフラグを示すものです。
 数値データのデータ型は DECIMAL
 フラグのデータ型は BIT
 を使用します。

登録が終われば『保存する』で次の画面で作成したテーブルの全レコードが表示される。
違っていれば 変更 で対象のレコードを変更できる。





3.データ型

データ型には
数値型 整数型、小数点型、ビット値型
日時データ型 DATE・DATETIME・TIMESTAMP型、TIME型、YEAR型
文字列型 DCHAR, VARCHAR, BINARY, VARBINARY, BLOB, TEXT, ENUM, SET型 
空間データ型 空間データ型
JSONデータ型 JSONデータ型
が有ります。
数値型だけ下記に概要を記載します。

 (1)整数型

型名 符号あり 符号なし  bit 
TINYINT -128~127 0~255 8
SMALLINT -32768~32767 0~65535 16
MIDIUMINT -8388608~8388607 0~16777215 24
INT -2147483648~2147483647 0~4294967295 32
BIGINT -9223372036854775808~
9223372036854775807
0~18446744073709551615 64
オプションとして
 UNSIGNED 符号有り(tpno SMALLINT)・無し(tpno SMALLINT UNSIGNED)
 ZEROFILL 値が無い左側に0を表示 (tpno SMALLINT ZEROFILL)
  0表示させた場合は自動的に符号無しになります。


 (2)少数点型

符号有りになっている。
型名
DECIMAL 正確な値を格納する固定精度データ型 例(4,2)で全体4桁内少数点2桁。最大桁65
FLOAT おおよその値を格納する浮動小数点データ型 約7桁の有効桁数を持っている。
DOUBLE FLOATと同じだが桁数が多くその分精度が高い 約15桁の有効桁数を持っている。
REAL


 (3)ビット値型

型名
BIT BIT(M)で指定する。 Mは最大64まで指定が出来ます。M=2 b'01' B'01' 0b01
BOOLEAN TINYINT(1)で8bit true false で表示するが255も入力可能。BIT(1)の方が良いかも
SERIAL
更新日 2025/11/25 19:37  管理者 平林 剛Hirabayashi Takeshi