Security improvements:
- Removed registration link from login page
- Disabled /auth/register route - redirects with error message
- Removed demo credentials from login page
- Added info message: 'New users are created by administrators'
UI improvements:
- Compacted all admin interface buttons (btn-sm)
- Reduced heading sizes (H2 → H4) for less visual dominance
- Shortened badge texts ('Administrator' → 'Admin', 'Benutzer' → 'User')
- Optimized spacing and reduced margins/paddings
- Cleaner, more professional admin interface
Access control:
- Only administrators can create new users via admin panel
- Self-registration completely disabled for security
- Maintains full admin functionality with improved UX
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
-
Repository klonen und Abhängigkeiten installieren:
cd QueryBuilder pip install -r requirements.txt -
Umgebungsvariablen konfigurieren:
# .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 -
Anwendung starten:
python run.py -
Im Browser öffnen:
http://localhost:5000
Standard-Login
- Benutzername: admin
- Passwort: admin123
API-Endpunkte
Gespeicherte Queries abrufen
# 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- Kundendatenorders- Bestellungenproducts- Produkte
Beispiel-Queries
-- 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.dbDatei
Oracle Database
# 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
# 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
Description
Languages
JavaScript
36.6%
HTML
29.2%
Python
25.6%
CSS
8.6%