Skip to content

Sahinbascoding/dhbw-db-2425

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧰 Datenbankverwaltung per Web-App

Diese Web-Anwendung ermöglicht das Arbeiten mit zwei Datenbankmodellen (MySQL und MongoDB) – ganz ohne manuelle Skriptausführung. Alle Aufgaben lassen sich bequem über die Benutzeroberfläche mit einem Klick ausführen.

🌐 Funktionen der Web-App

🔄 Datenimport (SQL → MySQL)

Beim Klick auf „SQL-Daten importieren“ wird initiate_db.py ausgeführt. Dieses ruft folgende Module auf:

  1. enable_local_infile.py
    Aktiviert das Laden lokaler Daten (enable_local_infile()).

  2. import_sql_db.py
    Führt folgende SQL-Skripte aus – in dieser Reihenfolge:

    • create_shema.sql
    • load_data.sql
    • update_fahrt.sql
    • data_cleanup.sql
  3. activate_triggers.py
    Aktiviert Trigger für das Logging in der Changelog-Tabelle.

  4. activate_procedures.py
    Aktiviert Stored Procedures zum späteren Hinzufügen von Fahrten.


🔁 Konvertierung: MySQL → MongoDB

  • „In MongoDB konvertieren“ ruft convert_to_mongo.py auf.
  • Daten werden in MongoDB übertragen.
  • Optional: Erstellung einer embedded Collection bei Tabellenauswahl.
  • Die im create_shema.sql definierte Log-Tabelle wird dabei automatisch mit Konvertierungsdaten gefüllt.

📊 Reports (SQL-Abfragen)

Durch Auswahl eines Reports werden entsprechende SQL-Dateien ausgeführt:

  • avg_speed_temp_march2024.sql
  • drivers_last_15_months.sql
  • max_speed_per_driver.sql

📥 JSON-Daten importieren (MongoDB)

  • Beim Klick auf „Daten importieren“ kann z. B. unfall.json hochgeladen und über insert_json_to_mongo.py in MongoDB eingefügt werden.

📝 Trigger & Changelog

  • Beim Editieren einer MySQL-Tabelle wird automatisch ein zugehöriger Trigger ausgeführt (Tabelle-Namen_trigger.sql), der Änderungen in einer Changelog-Tabelle protokolliert.

🧪 Zufällige Fahrt generieren

  • Per Knopfdruck wird in der Route route_generate_random_fahrt.py mithilfe einer Stored Procedure (add_fahrt_procedure.sql) eine Fahrt mit Zufallswerten erzeugt.

➕ Extras

  • MySQL-Import per Button: initiate_db.py erledigt alles automatisch.
  • MySQL/MongoDB löschen: Per Button werden reset_mysql() bzw. reset_mongo() aufgerufen.
  • Zufällige Fahrt erstellen: Siehe oben bei „Zufällige Fahrt generieren“.

⚙️ Voraussetzungen

🔑 MySQL aktivieren

Get-Service | Where-Object { $_.Name -like "*mysql*" }
net start mysql
# oder
net start MySQL80

🟢 MongoDB aktivieren

Get-Service | Where-Object { $_.Name -like "*mongo*" }
net start MongoDB
# oder
net start MongoDBServer

🐍 Python

Download Python


🗄️ MySQL

MySQL & MySQL Shell müssen installiert sein:

🍃 MongoDB

MongoDB & MongoDB Shell müssen installiert sein:


💻 Installation & Start

🔧 Projekt klonen

git clone https://github.com/Sahinbascoding/dhbw-db-2425.git
cd dhbw-db-2425

🧪 Virtuelle Umgebung erstellen & aktivieren

python -m venv .venv
.venv\Scripts\Activate.ps1

📦 Abhängigkeiten installieren

pip install -r requirements.txt

🛠️ .env-Datei im Root-Verzeichnis erstellen

SECRET_KEY=dein-secret-key

MYSQL_HOST=127.0.0.1
MYSQL_USER=root
MYSQL_PASSWORD=deinpasswort
MYSQL_DB_NAME=dein_db_name

MONGO_HOST=localhost
MONGO_PORT=27017
MONGO_DB_NAME=dein_mongo_db

▶️ App starten

flask run

⚙️ Manuelle SQL-Nutzung

Falls gewünscht, können die MYSQL und Python-files auch manuell ausgeführt werden. Dafür das README_Manual.md lesen.

✅ Version & Team

Version: 1.0
Stand: 18.05.2025

Contributors:

  • 🧑‍💻 Ata Sahinbas, Luis Kilic

About

T3INF2004 Datenbanken I

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 59.9%
  • HTML 33.4%
  • CSS 6.7%