first commit
This commit is contained in:
213
README.md
Normal file
213
README.md
Normal file
@@ -0,0 +1,213 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user