Auswertung der Läufe (Running, Jogging) mit Python und MariaDB
Viele werden sich auf die vorhandenen Apps verlassen, die sie mal gekauft haben und denken, dass sie auf der sicheren Seite sind. Auf der sicheren Seite, dass sie immer an die Daten herankommen werden, die sie mal erstellt haben.
Aber was ist, wenn der Anbieter, sich anderen Geschäftsinteressen zuwendet? Es gab schon immer Apps, die eingestellt worden sind. Danach waren die Daten verschwunden. Das ist natürlich blöd für jemanden, der sich auf einen Marathon vorbereiten möchte.
Digitale Unabhängigkeit
Eine eigene lokal installierte Datenbank ist immer vorhanden. Notfalls, wenn sie auch nicht mehr unterstützt wird, mit Updates, klemmt man den Rechner vom Internet ab und arbeitet komplett offline.
Mit dem Einplatinencomputer Raspberry Pi kann man sich Speicherkarten bis 128 GB kaufen. Das reicht für gefühlte Millionen von Läufen aus. Auf dem Raspberry Pi mit Python und MariaDB kann sich so absichern.
Klar, eine Einarbeitung ist vonnöten und wenn nicht, fragt man eine KI.
Ich weiß, es wird jetzt ein Aufschrei in der Entwicklerszene geben, dass man sich nicht auf eine KI verlassen kann. Hier geht es aber um ein Script, welche lokal auf einem Rechner läuft, womöglich auch noch offline.
Python Script fürs Laufen
Hier ist so ein, ungefährliches Script für seine Hobbyläufe:
import mariadb, sys, getpass, datetime, os, subprocess
# Wir nutzen das datetime Modul von Python, um das aktuelle Jahr zu holen
aktuelles_jahr = datetime.datetime.now().year
erstes_datum_jahr = f"{aktuelles_jahr}-01-01"
def clear_screen():
# Löscht den Terminal-Inhalt (cls für Windows, clear für Linux/Mac)
os.system('cls' if os.name == 'nt' else 'clear')
def servercheck():
status = subprocess.run(['systemctl', 'is-active', 'mariadb.service'],
capture_output=True, text=True).stdout.strip()
return status == "active"
def ask_password():
while True:
wahl = input("\n Passwort (e)ingeben oder Programm (b)eenden? ").lower()
if wahl == 'b': sys.exit()
if wahl == 'e':
pw = getpass.getpass("Passwort: ")
if pw: return pw
print("Ungültiges Passwort. Neues eingeben")
def datenauswertung(passwort):
try:
conn = mariadb.connect(user="sven", password=passwort, database="laufen")
cur = conn.cursor()
# 1. Die Statistiken (Gesamt, Jahr, Januar-Challenge)
stat_query = """
SELECT
SUM(strecke),
SUM(IF(datum >= '2026-01-01', strecke, 0)),
SUM(IF(datum BETWEEN '2026-01-01' AND '2026-01-19', strecke, 0))
FROM speicherung
"""
cur.execute(stat_query)
gesamt, jahr, januar_spezial = cur.fetchone()
# 2. Dein neuer Befehl: Infos zum letzten Lauf
last_run_query = "SELECT datum, strecke, zeit FROM speicherung WHERE datum = (SELECT MAX(datum) FROM speicherung)"
cur.execute(last_run_query)
l_datum, l_strecke, l_zeit = cur.fetchone()
# Ausgabe
print(f"Letzter Lauf am {l_datum.strftime('%d.%m.%Y')}: {l_strecke} km in {l_zeit}")
print("-" * 30)
print(f"Gesamtstrecke: {gesamt:.2f} km")
print(f"Januar-Challenge: {januar_spezial:.2f} km")
conn.close()
except Exception as e:
print(f"Fehler: {e}")
if __name__ == "__main__":
if servercheck():
pw = ask_password()
datenauswertung(pw)
else:
print("❌ MariaDB Dienst läuft nicht. Bitte prüfen!")
MariaDB Tabelle
Die MariaDB Tabelle, die auf dieses Script zugrunde liegt:
MariaDB [laufen]> SELECT * FROM speicherung;
+———-+————+———-+———+
| laufenid | datum | zeit | strecke |
+———-+————+———-+———+
| 9 | 2025-12-21 | 00:16:00 | 1.4 |
| 10 | 2025-12-22 | 00:17:00 | 1.5 |
| 11 | 2025-12-24 | 00:18:00 | 1.9 |
| 12 | 2025-12-28 | 00:13:00 | 1.27 |
| 13 | 2025-12-29 | 00:07:00 | 0.55 |
| 14 | 2025-12-30 | 00:15:00 | 1.4 |
| 15 | 2026-01-01 | 00:18:00 | 1.5 |
| 16 | 2026-01-08 | 00:09:00 | 0.9 |
| 18 | 2026-01-11 | 00:14:00 | 1.58 |
| 19 | 2026-01-12 | 00:14:00 | 1.45 |
| 20 | 2026-01-13 | 00:24:00 | 2.374 |
| 21 | 2026-01-14 | 00:25:00 | 2.2 |
| 22 | 2026-01-16 | 00:41:00 | 3.972 |
| 23 | 2026-01-17 | 00:47:00 | 4.13 |
| 24 | 2026-01-19 | 00:15:00 | 1.4 |
| 25 | 2026-01-22 | 00:13:00 | 1.92 |
Warum beginnt meine ID bei 9 und nicht bei 1?
Ich hatte 8 Testeintragungen gemacht, die ich natürlich gelöscht habe, denn sonst wären die Daten verfälscht worden.
Wie ihr seht, ich bin jetzt nicht der Vorzeigeläufer, die seine 10 km täglich abspult. Mag sein, dass man es machen „muss“. Ich finde nein. Es muss Spaß machen. In der kalten Jahreszeit fällt mir persönlich auch schwerer viel zu laufen. Am 17.01.2026 waren die Temperaturen mal im angenehmen Bereich von +9 Grad, weshalb ich da länger unterwegs war.
Wenn ihr noch mehr Anregungen bekommen wollt, könnt ihr mein E-Book (auf Englisch) bei Amazon käuflich erwerben, oder im Kindle Unlimited lesen.
Auf das Bild klicken und dann wird man auf die entsprechende Amazon-Seite geleitet.

Herunterladen der MariaDB Datenbank
Windows / Mac
MariaDB Community Server wird von der offiziellen Projektseite am besten heruntergeladen. Server ist nur der Name eines Programms auf dem Rechner. Dafür braucht man keinen Extracomputer.
Linux
Linux-Benutzer haben MariaDB sehr oft in der eigenen Distribution schon vorhanden. Ansonsten auch über den oben stehenden Link installieren.