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 lukeminen web-palvelimella

Tämän sivun ohjeissa on kerrottu, miten data saadaan luettua tietokannasta ja tulostettua selaimelle flask-web-palvelimen avulla. Ohjeeseen ei ole kirjattu python-rivejä, jotka ovat samoja kuin edellisen sivun ohjeessa; ts. ennen alla olevia ohjelmariviä täytyy ensin määritellä merkistökoodaus (utf-8-rivi), tuoda MySQLdb-kirjasto (import-rivi), määritellä tietokantayhteys (mySQLdb.connect-rivi) ja avata yhteys (cursor-rivi)!

Tehdään Python-skripti (esim. web-lt.py), jolla taulun sisältö saadaan tulostettua. SELECT-lauseen *-merkki tarkoittaa, että lampodata-taulusta valitaan kaikki sarakkeet (kultakin riviltä):

Template-tiedosto web-lt.html

Älä kirjoita omaan tiedostoosi keltaisella pohjalla olevia kommentteja!

<html>
 <head>
  <meta charset="utf-8">
 </head>
  <body>
  <table border=1> HTML-taulukon alkutagi; solujen ympärille yhden pikselin levyiset reunat
    <tr> HTML-taulukon rivin alkutagi
      <th>Päiväys</th>HTML-taulukon otsikkosolut (4 kpl)
      <th>Aika</th>
      <th>Tila</th>
      <th>Lämpötila</th>
    </tr>
    
Käydään läpi kaikki templateen välitetyn taulukkomuuttujan k rivit ja sijoitetaan kunkin rivin sisältö muuttujaan rivi
{% for rivi in k %} Python-kielinen osuus ympäröidään templatessa {% %} merkeillä. <tr> {% for kentta in rivi %} Kunkin rivin sisällä käydään läpi sarakkeet <td>{{ kentta }}</td> ja tulostetaan ne omiin soluihinsa {% endfor %} Sisemmän for-loopin loppu </tr> {% endfor %} Ulomman for-loopin loppu </table> Taulukon loppu </body> </html>

Python-skripti lt.py

Tässä esitetään vain osuus, joka tarvitaan tietokannan tulostamiseen web-palvelimen avulla.

@app.route("/lt")
def sub():
  tietokanta = MySQLdb.connect("localhost", "monitor", "salakala", "ltmittaukset", charset='utf8', use_unicode=True)
  kursori=tietokanta.cursor()
  kursori.execute ("SELECT * FROM lampodata")
  kentat = kursori.fetchall()
  return render_template('web-lt.html', k=kentat)  # Send text to the browser
Päivitetty 28.8.2022

<<  Edellinen
(6) Datan lukeminen tietokannasta
Sivu 7/9Seuraava >>
(8) Datan lukeminen web-lomake-kyselyllä
© Timo Heikkinen | timo piste heikkinen at oamk piste fi