DGSoft 86f9117d55 🔒 Disable self-registration and compact admin interface
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
2025-10-14 21:42:32 +02:00
2025-10-14 21:27:41 +02:00
2025-10-14 21:27:41 +02:00
2025-10-14 21:27:41 +02:00
2025-10-14 21:27:41 +02:00
2025-10-14 21:27:41 +02:00
2025-10-14 21:27:41 +02:00
2025-10-14 21:27:41 +02:00
2025-10-14 21:27:41 +02:00
2025-10-14 21:27:41 +02:00
2025-10-14 21:27:41 +02:00

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:

    cd QueryBuilder
    pip install -r requirements.txt
    
  2. 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
    
  3. Anwendung starten:

    python run.py
    
  4. 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 - Kundendaten
  • orders - Bestellungen
  • products - 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.db Datei

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
No description provided
Readme 527 KiB
Languages
JavaScript 36.6%
HTML 29.2%
Python 25.6%
CSS 8.6%