# Query Builder - SQL Web Interface Eine Python Flask-Webanwendung zum Ausführen und Verwalten von SQL-Queries mit einer benutzerfreundlichen Web-Oberfläche. ## Features - **Authentifikation**: Benutzeranmeldung und -registrierung - **Multi-Datenbank-Unterstützung**: Verbindung zu Oracle, PostgreSQL und SQLite - **Query Builder**: Interaktive SQL-Query-Eingabe und -Ausführung - **Tabellen-Explorer**: Anzeige aller verfügbaren Datenbanktabellen in der linken Sidebar - **Datenbankauswahl**: Auswahl zwischen verschiedenen konfigurierten Datenbankverbindungen - **Verbindungstest**: Test der Datenbankverbindung mit einem Klick - **Gespeicherte Queries**: Speichern und Verwalten häufig verwendeter SQL-Queries - **API-Zugriff**: RESTful API zum Abrufen gespeicherter Queries als JSON oder CSV - **Export-Funktionen**: Download von Query-Ergebnissen als CSV ## Projektstruktur ``` QueryBuilder/ ├── app/ │ ├── __init__.py # Flask App Initialisierung │ ├── models.py # Datenbankmodelle (User, SavedQuery, etc.) │ ├── routes/ │ │ ├── auth.py # Authentifikation (Login/Register) │ │ ├── main.py # Hauptrouten (Dashboard, Query-Ausführung) │ │ └── api.py # API-Endpunkte für Query-Export │ ├── services/ │ │ ├── database_service.py # Datenbankverbindung und Query-Ausführung │ │ └── database_manager.py # Multi-Datenbank-Manager │ ├── templates/ │ │ ├── base.html # Basis-Template │ │ ├── dashboard.html # Hauptinterface │ │ └── auth/ │ │ ├── login.html # Login-Seite │ │ └── register.html # Registrierungs-Seite │ └── static/ │ ├── css/style.css # Custom CSS │ └── js/app.js # Frontend JavaScript ├── requirements.txt # Python Dependencies ├── .env # Umgebungsvariablen ├── run.py # Anwendungsstart └── README.md # Diese Datei ``` ## Installation 1. **Repository klonen und Abhängigkeiten installieren:** ```bash cd QueryBuilder pip install -r requirements.txt ``` 2. **Umgebungsvariablen konfigurieren:** ```bash # .env Datei erstellen (basierend auf .env.example) cp .env.example .env # Dann .env anpassen mit Ihren Datenbankverbindungen: # Flask Konfiguration SECRET_KEY=your-secret-key-here FLASK_ENV=development # Oracle Datenbank (optional) ORACLE_HOST=your-oracle-host.com ORACLE_PORT=1521 ORACLE_SERVICE_NAME=ORCL ORACLE_USERNAME=your_username ORACLE_PASSWORD=your_password # PostgreSQL Datenbank (optional) POSTGRES_HOST=your-postgres-host.com POSTGRES_PORT=5432 POSTGRES_DATABASE=your_database POSTGRES_USERNAME=your_username POSTGRES_PASSWORD=your_password ``` 3. **Anwendung starten:** ```bash python run.py ``` 4. **Im Browser öffnen:** ``` http://localhost:5000 ``` ## Standard-Login - **Benutzername:** admin - **Passwort:** admin123 ## API-Endpunkte ### Gespeicherte Queries abrufen ```bash # Alle gespeicherten Queries GET /api/queries # Spezifische Query nach Namen GET /api/queries/{query_name} # Query ausführen und Ergebnisse als JSON erhalten GET /api/queries/{query_name}/execute?connection=demo # Query ausführen und als CSV downloaden GET /api/queries/{query_name}/execute?format=csv&connection=oracle # Direkte Export-Endpunkte GET /api/queries/{query_name}/export/json GET /api/queries/{query_name}/export/csv ``` ## Verwendung ### Query Builder Interface - **Linke Sidebar**: Zeigt alle verfügbaren Datenbanktabellen - **Rechte Seite**: SQL-Query-Eingabefeld und Ergebnisanzeige - **Query ausführen**: Ctrl+Enter oder "Query Ausführen" Button - **Query speichern**: Ctrl+S oder "Query Speichern" Button ### Demo-Daten Die Anwendung erstellt automatisch Demo-Tabellen mit Beispieldaten: - `customers` - Kundendaten - `orders` - Bestellungen - `products` - Produkte ### Beispiel-Queries ```sql -- Alle Kunden anzeigen SELECT * FROM customers; -- Bestellungen mit Kundeninformationen SELECT c.name, o.product_name, o.quantity, o.price FROM customers c JOIN orders o ON c.id = o.customer_id; -- Top-Städte nach Kundenanzahl SELECT city, COUNT(*) as customer_count FROM customers GROUP BY city ORDER BY customer_count DESC; ``` ## Datenbankunterstützung Die Anwendung unterstützt mehrere Datenbanktypen gleichzeitig: ### SQLite (Standard) - Keine Konfiguration erforderlich - Demo-Datenbank mit Beispieldaten - Lokale `querybuilder.db` Datei ### Oracle Database ```bash # Umgebungsvariablen in .env setzen ORACLE_HOST=your-oracle-host.com ORACLE_PORT=1521 ORACLE_SERVICE_NAME=ORCL ORACLE_USERNAME=your_username ORACLE_PASSWORD=your_password ``` ### PostgreSQL ```bash # Umgebungsvariablen in .env setzen POSTGRES_HOST=your-postgres-host.com POSTGRES_PORT=5432 POSTGRES_DATABASE=your_database POSTGRES_USERNAME=your_username POSTGRES_PASSWORD=your_password ``` ### Verbindungstest - Über das Dashboard können Sie Datenbankverbindungen testen - Der "Verbindung testen" Button prüft die Konnektivität - Fehlermeldungen helfen bei der Fehlerdiagnose ## Technische Details ### Backend - **Flask**: Web-Framework - **SQLAlchemy**: ORM für Datenbankoperationen - **Flask-Login**: Session-Management - **cx-Oracle/oracledb**: Oracle-Datenbanktreiber - **psycopg2**: PostgreSQL-Datenbanktreiber - **SQLite**: Standard-Datenbank (keine zusätzliche Installation) ### Frontend - **Bootstrap 5**: UI-Framework - **Font Awesome**: Icons - **Vanilla JavaScript**: Interactive Funktionalität ### Sicherheit - Passwort-Hashing mit Werkzeug - CSRF-Schutz - SQL-Injection-Schutz durch parametrisierte Queries - Session-basierte Authentifikation ## Erweiterungsmöglichkeiten - Mehrere Datenbankverbindungen - Query-Syntax-Highlighting - Autocomplete für SQL-Keywords - Query-Performance-Analyse - Benutzerrollen und Berechtigungen - Query-Historie - Dashboard mit Diagrammen ## Lizenz MIT License