Tietokoneiden näyttöjä, joissa näkyy kuvaa automaatiolaboratorion laitteistosta. Monitoreiden takana näkyy sama laitteisto kuin kuvissa.

timohei.net / Opintojaksot / Älykkään sähkölaitteen projekti / Tietokanta /
Datan syöttäminen tietokantaan

LISÄYS: tietokannan avauskäskyyn on lisätty merkistön määrittely!

Luo tiedosto tallennus.py ja syötä sinne seuraavanlainen Python-skripti:

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import MySQLdb

tietokanta = MySQLdb.connect("localhost", "monitor", "joku_salasana", "ltmittaukset",
                                                      charset='utf8', use_unicode=True)
kursori=tietokanta.cursor()

try:
    kursori.execute ("""INSERT INTO lampodata 
            values(CURRENT_DATE() - INTERVAL 1 DAY, NOW(), 'keittiö', 21.7)""")
    kursori.execute ("""INSERT INTO lampodata 
            values(CURRENT_DATE() - INTERVAL 1 DAY, NOW(), 'kasvihuone', 24.5)""")
    kursori.execute ("""INSERT INTO lampodata 
            values(CURRENT_DATE() - INTERVAL 1 DAY, NOW(), 'autotalli', 18.1)""")

    kursori.execute ("""INSERT INTO lampodata 
            values(CURRENT_DATE(), NOW() - INTERVAL 12 HOUR, 'keittiö', 20.6)""")
    kursori.execute ("""INSERT INTO lampodata 
            values(CURRENT_DATE(), NOW() - INTERVAL 12 HOUR, 'kasvihuone', 17.1)""")
    kursori.execute ("""INSERT INTO lampodata 
            values(CURRENT_DATE(), NOW() - INTERVAL 12 HOUR, 'autotalli', 16.2)""")

    kursori.execute ("""INSERT INTO lampodata 
            values(CURRENT_DATE(), NOW(), 'kitchen', 22.9)""")
    kursori.execute ("""INSERT INTO lampodata 
            values(CURRENT_DATE(), NOW(), 'kasvihuone', 25.7)""")
    kursori.execute ("""INSERT INTO lampodata 
            values(CURRENT_DATE(), NOW(), 'autotalli', 18.2)""")

    tietokanta.commit()
    print "Data talletettu"

except:
    print "Erhe tallennuksessa: tietokannan tiedot palautetaan"
    tietokanta.rollback()

Suorita skripti:

pi@raspberrypi:~ $ python tallennus.py

Tietokannan ltmittaukset tauluun lampodata tallentuu skriptin sisältämien komentojen mukaan yhteensä yhdeksän riviä dataa, joista kukin rivi sisältää neljä kentällistä tietoa. Jos skripti suoritetaan uudestaan, tauluun tulee aina yhdeksän riviä lisää jokaisella skriptin suorituskerralla.

Taulun sisältöä voidaan tarkastella tekemällä tietokantaan hakuja. Käynnistä MySQL-käyttöliittymä monitor-käyttäjänä ja anna komento, jolla koko taulun sisältö tulostuu:

pi@raspberrypi:~ $ mysql -u monitor -p
Enter password:         
mysql> USE ltmittaukset;
mysql> SELECT * FROM lampodata;
+------------+----------+------------+------------+
| lt_pvm     | lt_aika  | tila       | lampotila  |
+------------+----------+------------+------------+
| 2017-09-29 | 14:59:22 | keittiö    |       21.7 |
| 2017-09-29 | 14:59:22 | kasvihuone |       24.5 |
| 2017-09-29 | 14:59:22 | autotalli  |       18.1 |
| 2017-09-30 | 02:59:22 | keittiö    |       20.6 |
| 2017-09-30 | 02:59:22 | kasvihuone |       17.1 |
| 2017-09-30 | 02:59:22 | autotalli  |       16.2 |
| 2017-09-30 | 14:59:22 | keittiö    |       22.9 |
| 2017-09-30 | 14:59:22 | kasvihuone |       25.7 |
| 2017-09-30 | 14:59:22 | autotalli  |       18.2 |
+------------+----------+------------+------------+
9 rows in set (0.00 sec)
mysql> 

Kokeillaan hakea esimerkiksi kaikki mittaukset, joiden tulos on ollut yli 20 astetta:

mysql> SELECT * FROM lampodata WHERE lampotila > 20;
+------------+----------+------------+------------+
| lt_pvm     | lt_aika  | tila       | lampotila  |
+------------+----------+------------+------------+
| 2017-09-29 | 14:59:22 | keittiö    |       21.7 |
| 2017-09-29 | 14:59:22 | kasvihuone |       24.5 |
| 2017-09-30 | 02:59:22 | keittiö    |       20.6 |
| 2017-09-30 | 14:59:22 | keittiö    |       22.9 |
| 2017-09-30 | 14:59:22 | kasvihuone |       25.7 |
+------------+----------+------------+------------+
5 rows in set (0.00 sec)
mysql> 

Tehdään seuraavaksi Python-skripti, jolla taulun sisältö saadaan tulostettua - sitä tarvitaan, kun halutaan saada mittaustulokset näkymään web-selaimella (seuraavalla alasivulla).

Päivitetty 28.8.2022

<<  Edellinen
(4) Uuden taulun luominen
Sivu 5/9Seuraava >>
(6) Datan lukeminen tietokannasta
© Timo Heikkinen | timo piste heikkinen at oamk piste fi