Kategorien
Python

Raspberry Pi – Python – SQLite Datenbank – einfache sparsame Möglichkeit Daten professionell zu managen

Der folgende Post bietet folgende Codebeispiele in Python incl. komplett Source zum Download

  1. Erzeugen einer neuen SQLite Datenbank
  2. Anlegen einer Tabelle
  3. Anzeige aller Tabellen in einer Datenbank
  4. Werte in die Tabelle einfügen
  5. Tabelleninhalte anzeigen
  6. Code zum Download


0 Vorab zwei Links zu SQLite Beschreibungen

1 Erzeugen einer neuen SQLite Datenbank

Es reicht aus einen Connect zu einer noch nicht existierenden Datenbank zu machen und Diese wird als Datei neu angelegt.

#!/usr/bin/python
# -*- coding: utf-8 -*-
 
import sqlite3 as lite
import sys
 
def create_new_database(PfadzurDatenbank):
    try:
        con = lite.connect(PfadzurDatenbank) 
        con.commit()
 
    except lite.Error, e:
        if con:
            con.rollback()
            print "Error %s:" % e.args[0]
            sys.exit(1)
 
    finally:
        if con:
            con.close() 
 
create_new_database("/home/pi/sqlite3/BeispielDatenbank.db")
pi@raspberrypi ~/sqlite3 $ ls -al
insgesamt 580
drwxr-xr-x  2 pi pi   4096 Okt 21 10:02 .
drwxr-xr-x 12 pi pi   4096 Sep 27 20:26 ..
-rw-r--r--  1 pi pi      0 Okt 21 10:02 BeispielDatenbank.db

2 Anlegen einer Tabelle

Im folgenden Code Beispiel wird eine Tabelle angelegt, die Messwerte eines DS18820 Temperatursensors aufnehmen soll.
Die Tabelle besteht aus drei Spalten

  • Zeitstempel
  • minimale Temperatur
  • maximale Temperatur

Ziel ist es später jeweils einen Zeitstempel pro Stunde einzufügen und Temperaturen die innerhalb der Stunde gemessen werden, werden mit dem Maximal- und Minimalwert verglichen.
Bildschirmfoto vom 2015-10-21 11:14:11
Ist der neue Wert größer als der in der Tabelle stehende Maximalwert, wird dieser ersetzt. Ist der neue Wert kleiner als der in der Tabelle stehende Minimalwert wird der Minimalwert ersetzt.
So bleiben unabhängig von der Anzahl der Messungen (größer 1) drei Werte pro Stunde (Zeit, MinTemp, MaxTemp), was für eine normale Messungen von Raum oder Außentemperaturen vollkommen ausreichend ist.

#!/usr/bin/python
# -*- coding: utf-8 -*-
 
import sqlite3 as lite
import sys
 
def create_new_temperature_sensor_table(PathToDatabase, TableName):
    try:
        con = lite.connect(PathToDatabase)
        cur = con.cursor()  
        cur.executescript("""
            CREATE TABLE %s(    Timestamp INT PRIMARY KEY, 
                                Temp_MIN REAL, 
                                Temp_MAX REAL); 
            """ % TableName) 
        con.commit()
 
    except lite.Error, e:
 
        if con:
            con.rollback()
 
            print "Error %s:" % e.args[0]
            sys.exit(1)
 
    finally:
 
        if con:
            con.close() 
create_new_temperature_sensor_table("/home/pi/sqlite3/BeispielDatenbank.db", "Fuehler1")

3 Anzeige aller Tabellen in einer Datenbank

Aktuell ist erst eine Tabelle (Fuehler1) in der Datenbank angelegt, wie sich mit folgendem Script anzeigen kann.

#!/usr/bin/python
# -*- coding: utf-8 -*-
 
import sqlite3 as lite
import sys
def list_all_tables_in_DB(PathToDatabase):
    try:
        con = lite.connect(PathToDatabase)
 
        with con:
 
            cur = con.cursor()    
            cur.execute("SELECT name FROM sqlite_master WHERE type='table'")
 
            rows = cur.fetchall()
 
            for row in rows:
                print row[0]
 
    except lite.Error, e:
 
        if con:
            con.rollback()
 
            print "Error %s:" % e.args[0]
            sys.exit(1)
 
    finally:
 
        if con:
            con.close() 
 
list_all_tables_in_DB("/home/pi/sqlite3/BeispielDatenbank.db")
pi@raspberrypi ~/python_scripts $ python DB_Funktionen.py 
Fuehler1

4 Werte in die Tabelle einfügen

Folgendes soll in die Tabelle Fuehler1 eingefügt werden:

  • Timestamp: 1445432400
  • Temp_MIN: 15.0
  • Temp_MAX: 17.22
#!/usr/bin/python
# -*- coding: utf-8 -*-
 
import sqlite3 as lite
import sys
 
def insert_new_line_in_temperature_sensor_table(PathToDatabase, TableName, 
                                                Timestamp, Temp_MIN, Temp_MAX):
 
    try:
        con = lite.connect(PathToDatabase)
        cur = con.cursor()  
        cur.execute("""
            INSERT INTO %s 
            VALUES( %i , %.3f, %.3f)
            """ % (TableName, Timestamp, Temp_MIN, Temp_MAX))
        con.commit()
 
    except lite.Error, e:
 
        if con:
            con.rollback()
 
            print "Error %s:" % e.args[0]
            sys.exit(1)
 
    finally:
 
        if con:
            con.close() 
 
insert_new_line_in_temperature_sensor_table("/home/pi/sqlite3/BeispielDatenbank.db", 
                                            "Fuehler1", 1445432400, 15.0, 17.22)

5 Tabelleninhalte anzeigen

#!/usr/bin/python
# -*- coding: utf-8 -*-
 
import sqlite3 as lite
import sys
 
def show_all_table_entries(PathToDatabase, TableName):
    try:
        con = lite.connect(PathToDatabase)
        cur = con.cursor()  
        cur.execute("SELECT * FROM %s" % TableName)
        lines = cur.fetchall()
        for line in lines:
            print line
        con.commit()
 
    except lite.Error, e:
        if con:
            con.rollback()
            print "Error %s:" % e.args[0]
            sys.exit(1)
 
    finally:
        if con:
            con.close()
show_all_table_entries("/home/pi/sqlite3/BeispielDatenbank.db", "Fuehler1")
pi@raspberrypi ~/python_scripts $ python DB_Funktionen.py 
(1445432400, 15.0, 17.22)

6 Code zum Download

Download: DB_Funktionen.py

Von Henry Koch

take a look at: http://www.henrykoch.de/privat.html

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.