SQLpage ist ein reiner SQL -Webapp-Builder. Es richtet sich an Datenwissenschaftler, Analysten und Business-Intelligence-Teams, um schnell leistungsstarke datenzentrierte Anwendungen zu erstellen, ohne sich um die herkömmlichen Web-Programmiersprachen und -Konzepte kümmern zu müssen.
Mit SQLPage schreiben Sie einfache .sql
Dateien mit Abfragen an Ihre Datenbank, um Ihre Daten auszuwählen, zu gruppieren, zu aktualisieren, einzufügen und zu löschen, und Sie erhalten gut aussehende, saubere Webseiten, auf denen Ihre Daten als Text, Listen, Raster, Diagramme und Formulare angezeigt werden .
Code | Ergebnis |
WÄHLEN „Liste“ als Komponente, „Beliebte Websites“ als Titel;SELECT Name als Titel, URL als Link, CASE-Typ WENN 1 DANN „blau“ ELSE 'rot' ENDE als Farbe, Beschreibung, Symbol, aktiveFROM-Website; | |
SELECT „Diagramm“ als Komponente, „Quarterly Revenue“ als Titel, „Area“ als Typ;SELECT Quartal AS x, SUM(Umsatz) AS yFROM FinanzenGROUP NACH Quartal | |
SELECT „Formular“ als Komponente, „Benutzer“ als Titel, „Neuen Benutzer erstellen“ als Validierung;SELECT Name, Typ, Platzhalter, erforderlich, BeschreibungFROM user_form;INSERT INTO userSELECT $first_name, $last_name, $birth_dateWHERE $first_name IS NOT NULL; | |
Wählen Sie „Tab“ als Komponente und „true“ als Mitte; wählen Sie „Alle Karten anzeigen“ als Titel und „?“ als Link, $tab ist als aktiv null;wählen format('%s Karten anzeigen', Farbe) als Titel, format('?tab=%s', color) als Link, $tab=color as activefrom tab_example_cardsgroup by color; Wählen Sie „Karte“ als Komponente aus Titel, Beschreibung, Farbe image_url als top_image, linkfrom tab_example_cardswobei $tab null oder $tab = color ist; wählen Sie 'text' als Komponente, sqlpage.read_file_as_text('footer.md') als content_md |
SQLite, einschließlich der Möglichkeit, Erweiterungen wie Spatialite zu laden.
PostgreSQL und andere kompatible Datenbanken wie YugabyteDB , CockroachDB und Aurora .
MySQL und andere kompatible Datenbanken wie MariaDB und TiDB .
Microsoft SQL Server und alle kompatiblen Datenbanken und Anbieter wie Azure SQL und Amazon RDS .
Lesen Sie den offiziellen Leitfaden für die ersten Schritte auf der Website von SQLPage.
Der einfachste Einstieg besteht darin, die neueste Version von der Release-Seite herunterzuladen.
Laden Sie die Binärdatei herunter, die Ihrem Betriebssystem entspricht (Linux, MacOS oder Windows).
Entpacken Sie es: tar -xzf sqlpage-*.tgz
Führen Sie es aus: ./sqlpage.bin
Zur Ausführung auf einem Server können Sie das Docker-Image verwenden:
Docker installieren
Führen Sie in einem Terminal den folgenden Befehl aus:
docker run -it --name sqlpage -p 8080:8080 --volume "$(pwd):/var/www" --rm lovasoa/sqlpage
( "$(pwd):/var/www"
ermöglicht es sqlpage, SQL-Dateien aus Ihrem aktuellen Arbeitsverzeichnis auszuführen)
Erstellen Sie eine Datei namens index.sql mit den Inhalten aus diesem Beispiel
Öffnen Sie https://localhost:8080 in Ihrem Browser
Optional können Sie auch ein Verzeichnis mit der Konfigurationsdatei von sqlpage, benutzerdefinierten Komponenten und Migrationen (siehe „configuration.md“) in /etc/sqlpage
im Container bereitstellen.
docker run -it --name sqlpage -p 8080:8080 --volume "$(pwd)/source:/var/www" --volume "$(pwd)/configuration:/etc/sqlpage:ro" --rm lovasoa/sqlpage
Sie können zum Beispiel Folgendes verwenden:
Und platzieren Sie Ihre Website in einem Ordner namens source
und Ihre sqlpage.json
in einem Ordner namens configuration
.
Wenn Sie Ihr eigenes Docker-Image erstellen möchten, wird es nicht empfohlen, das rohe SQL-Seiten-Image als Basis zu verwenden, da es extrem reduziert ist und wahrscheinlich nicht die Abhängigkeiten enthält, die Sie benötigen. Stattdessen können Sie Debian als Basis nehmen und einfach die SQLpage-Binärdatei vom offiziellen Image in Ihr eigenes Image kopieren:
VON debian:stable-slimCOPY --from=lovasoa/sqlpage:main /usr/local/bin/sqlpage /usr/local/bin/sqlpage
Wir stellen kompilierte Binärdateien nur für die x86_64-Architektur bereit, stellen jedoch Docker-Images für andere Architekturen bereit, einschließlich arm64 und armv7. Wenn Sie SQLPage auf einem Raspberry Pi oder einer günstigeren ARM-Cloud-Instanz ausführen möchten, ist die Verwendung des Docker-Images die einfachste Möglichkeit.
Eine Alternative für Mac OS-Benutzer ist die Verwendung des Homebrew-Pakets von SQLPage.
Homebrew installieren
Führen Sie in einem Terminal die folgenden Befehle aus:
brew install sqlpage
SQLPage ist ein in Rust geschriebener Webserver, der als einzelne ausführbare Datei verteilt wird. Wenn es eine Anfrage an eine URL mit der Endung .sql
empfängt, findet es die entsprechende SQL-Datei, führt sie in der Datenbank aus und übergibt ihr Informationen aus der Webanfrage als SQL-Anweisungsparameter. Wenn die Datenbank beginnt, Zeilen für die Abfrage zurückzugeben, ordnet SQLPage jede Information in der Zeile einem Parameter in einer der vordefinierten Komponentenvorlagen zu und streamt das Ergebnis zurück an den Browser des Benutzers.
TODO-Liste: eine einfache ToDo-Listenanwendung, die veranschaulicht, wie man mit SQLPage eine einfache CRUD-Anwendung erstellt.
Diagramme, Tabellen, Formulare und Interaktivität: Eine kurze, gut kommentierte Demo, die zeigt, wie Diagramme, Tabellen, Formulare und Interaktivität zum Filtern von Daten basierend auf einem URL-Parameter verwendet werden.
Winziger Splitwise-Klon: eine gemeinsame Spesenverfolgungs-App
Corporate Conundrum: ein in SQL implementiertes Brettspiel
Master-Detail-Formulare: zeigt, wie man einen einfachen Satz von Formularen implementiert, um Daten in Datenbanktabellen einzufügen, die eine Eins-zu-Viele-Beziehung haben.
Die eigene offizielle Website und Dokumentation von SQLPage: Der SQL-Quellcode für die offizielle Website des Projekts, https://sql.datapage.app
Bildergalerie: Eine Bildergalerie, in der sich Benutzer anmelden und Bilder hochladen können. Veranschaulicht die Implementierung eines Benutzerauthentifizierungssystems mithilfe von Sitzungscookies und die Handhabung von Datei-Uploads.
Benutzerverwaltung: Eine Authentifizierungsdemo mit Benutzerregistrierung, Anmeldung, Abmeldung und vertraulichen Seiten. Verwendet PostgreSQL.
Erstellen einer JSON-API und Integrieren von React-Komponenten im Frontend: Zeigt, wie man eine React-Komponente in eine SQLPage-Website integriert und wie man einfach eine REST-API mit SQLPage erstellt.
Handhabung von Datei-Uploads: Eine Bildergalerie, in der authentifizierte Benutzer neue Bilder über ein Upload-Formular veröffentlichen können.
Massendatenimport aus CSV-Dateien: Ein einfaches Formular, mit dem Benutzer CSV-Dateien importieren können, um eine Datenbanktabelle zu füllen.
Beispiel für eine erweiterte Authentifizierung mit gespeicherten PostgreSQL-Prozeduren
Komplexe Webanwendung in SQLite mit Benutzerverwaltung, Datei-Uploads, Plots, Karten, Tabellen, Menüs, ...
Single Sign-On: Ein Beispiel für die Implementierung der OAuth- und OpenID Connect (OIDC)-Authentifizierung in SQLPage. Die Demo enthält auch einen CAS-Client (Central Authentication Service).
Dunkles Thema: Zeigt, wie der Benutzer zwischen einem hellen und einem dunklen Thema wechseln und die Präferenzen des Benutzers speichern kann.
Sie können alle Beispiele online ausprobieren, ohne etwas auf Ihrem Computer zu installieren, indem Sie die Online-Demo von SQLPage auf replit verwenden.
SQLPage kann entweder über eine Konfigurationsdatei in sqlpage/sqlpage.json
oder über Umgebungsvariablen wie DATABASE_URL
oder LISTEN_ON
konfiguriert werden.
Weitere Informationen finden Sie unter configuration.md
.
Darüber hinaus können benutzerdefinierte Komponenten erstellt werden, indem .handlebars
Dateien in sqlpage/templates
abgelegt werden. Beispiel.
SQLPage unterstützt HTTP/2 und HTTPS nativ und transparent. Legen Sie einfach SQLPAGE_HTTPS_DOMAIN=example.com
fest, und SQLPage fordert automatisch ein vertrauenswürdiges Zertifikat an und beginnt damit, den gesamten Datenverkehr Ihres Benutzers zu verschlüsseln. Keine mühsame manuelle Konfiguration für Sie und keine lästigen „Verbindung ist nicht sicher“-Meldungen für Ihre Benutzer!
Sie können SQLpage serverlos ausführen, indem Sie es in eine AWS Lambda-Funktion kompilieren. Eine einfache Möglichkeit hierfür ist die Verwendung des bereitgestellten Docker-Images:
docker build -t sqlpage-lambda-builder . -f lambda.Dockerfile --target Builder Docker führt „sqlpage-lambda-builder“ cat „deploy.zip“ > „sqlpage-aws-lambda.zip“ aus
Sie können dann einfach Ihre eigenen SQL-Dateien zu sqlpage-aws-lambda.zip
hinzufügen und sie auf AWS Lambda hochladen, indem Sie „Benutzerdefinierte Laufzeit unter Amazon Linux 2“ als Laufzeit auswählen.
Wenn Sie serverlos arbeiten, können Sie die SQL-Dateien direkt in das Image einschließen, das Sie bereitstellen. Wenn Sie Ihre SQL-Dateien jedoch im Handumdrehen aktualisieren möchten, ohne ein neues Image zu erstellen, können Sie die Dateien direkt in der Datenbank in einer Tabelle mit der folgenden Struktur speichern:
CREATE TABLE sqlpage_files( path VARCHAR(255) NOT NULL PRIMARY KEY, Inhalt BLOB, last_modified TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
Stellen Sie sicher, dass Sie last_modified
jedes Mal aktualisieren, wenn Sie den Inhalt einer Datei aktualisieren (oder dies innerhalb eines TRIGGERs tun). SQLPage analysiert eine Datei nur dann erneut aus der Datenbank, wenn sie geändert wurde.
actix web verarbeitet HTTP-Anfragen mit unglaublicher Geschwindigkeit,
Tabler übernimmt das Styling für professionell aussehende, saubere Komponenten.
Bei Tabler-Symbolen handelt es sich um einen großen Satz von Symbolen, die Sie direkt aus Ihrem SQL auswählen können.
Lenker rendern HTML-Seiten aus lesbaren Vorlagen für jede Komponente.
Warum SQL anstelle einer echten Programmiersprache verwenden? SQL ist nicht einmal Turing-vollständig!
Sie konzentrieren sich auf das falsche Thema. Wenn Sie Ihre Anwendung deklarativ ausdrücken können, sollten Sie dies tun – sei es mit SQL oder einer anderen Sprache. Deklarativer Code ist oft prägnanter, lesbarer, einfacher zu begründen und leichter zu debuggen als imperativer Code.
SQL ist einfacher als herkömmliche Sprachen, oft auch für Nicht-Programmierer lesbar, aber dennoch sehr leistungsstark.
Wenn Komplexität Ihr Ziel ist, beachten Sie, dass SQL tatsächlich Turing-vollständig ist.
Selbst ohne rekursive Abfragen wäre eine Folge von SQL-Anweisungen, die durch Benutzerinteraktionen gesteuert werden (wie SQLPage), immer noch Turing-vollständig, sodass Sie eine SQL-basierte Website erstellen können, die als Turing-Maschine fungiert.
Nur weil Sie es können, heißt das nicht, dass Sie es auch tun sollten...
– Jemand ist auf Reddit gemein
Es geht nicht um „sollte“ – es geht um „warum nicht?“ Wenn Sie möchten, können Sie die Linien weiter ausmalen, aber wir werden hier sein und Spaß mit unseren SQL-Websites haben.
Ist das dasselbe wie Microsoft Access?
Die Ziele sind ähnlich – die Erstellung einfacher datenzentrierter Anwendungen –, aber die Tools unterscheiden sich erheblich:
SQLPage ist ein Webserver, keine Desktop-App.
SQLPage stellt eine Verbindung zu vorhandenen robusten relationalen Datenbanken her. Access versucht, eine Datenbank zu sein .
Der Zugang ist teuer und proprietär; SQLPage ist Open Source.
SQLPage erspart Ihnen die Qual von Visual Basic for Applications.
Ist der Name ein Verweis auf Microsoft FrontPage?
FrontPage war ein visueller statischer Website-Builder, der in den späten 90er Jahren beliebt war. Ich hatte nichts davon gehört, bis jemand danach fragte.
Ich mag CSS. Ich möchte Websites entwerfen, nicht SQL schreiben.
Wenn Sie Ihr eigenes HTML und CSS schreiben möchten, können Sie benutzerdefinierte Komponenten erstellen, indem Sie eine .handlebars
Datei in sqlpage/templates
hinzufügen und dort Ihr HTML und CSS schreiben. (Beispiel). Sie können die html
-Komponente auch verwenden, um Roh-HTML zu schreiben, oder die shell
Komponente, um benutzerdefinierte Skripte und Stile einzubinden.
Aber SQLPage ist der Meinung, dass Sie sich über die Randradien der Schaltflächen keine Gedanken machen sollten, bis Sie einen funktionierenden Prototyp haben. Wir stellen sofort einsatzbereite, gut aussehende Komponenten bereit, damit Sie sich auf Ihr Datenmodell konzentrieren und schnell iterieren können.
SQLPage kann aus mehreren Quellen heruntergeladen werden:
Wir freuen uns über Beiträge! SQLPage wurde mit Rust erstellt und verwendet Vanilla-Javascript für seine Frontend-Teile.
Ausführliche Anweisungen zur Entwicklungseinrichtung, zum Testen und zum Pull-Request-Prozess finden Sie in unserem Contributing Guide.