213 lines
6.1 KiB
Markdown
213 lines
6.1 KiB
Markdown
# 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 |