SQLpage est un générateur d'applications Web uniquement SQL . Il est destiné aux scientifiques des données, aux analystes et aux équipes de business intelligence pour créer rapidement de puissantes applications centrées sur les données, sans se soucier des langages et concepts de programmation Web traditionnels.
Avec SQLPage, vous écrivez de simples fichiers .sql
contenant des requêtes sur votre base de données pour sélectionner, regrouper, mettre à jour, insérer et supprimer vos données, et vous obtenez de belles pages Web claires affichant vos données sous forme de texte, de listes, de grilles, de tracés et de formulaires. .
Code | Résultat |
SÉLECTIONNER « liste » comme composant, « Sites Web populaires » comme titre ; SELECT nom comme titre, URL comme lien, Type de CAS QUAND 1 ALORS 'bleu' AUTRE 'rouge' FIN en couleur, description, icône, site Web activeFROM ; | |
SELECT » graphique » comme composant, « Revenu trimestriel » comme titre, « zone » comme type ; SELECT trimestre AS x, SUM(revenu) AS yFROM financesGROUPE PAR trimestre | |
SELECT 'formulaire' comme composant, 'Utilisateur' comme titre, 'Créer un nouvel utilisateur' comme validation ; SELECT nom, type, espace réservé, obligatoire, descriptionFROM user_form ; INSERT INTO userSELECT $first_name, $last_name, $birth_dateWHERE $first_name IS NOT NULL ; | |
sélectionnez « onglet » comme composant, vrai comme centre ; sélectionnez « Afficher toutes les cartes » comme titre, « ? » comme lien, $tab est nul car actif ; sélectionnez format('Afficher %s cartes', couleur) comme titre, format('?tab=%s', color) comme lien, $tab=color as activefrom tab_example_cardsgroup by color ; sélectionnez « carte » comme composant ; sélectionnez titre, description, couleur image_url comme top_image, linkfrom tab_example_cardsoù $tab est nul ou $tab = color ; sélectionnez 'text' comme composant, sqlpage.read_file_as_text('footer.md') comme contents_md |
SQLite, y compris la possibilité de charger des extensions telles que Spatialite .
PostgreSQL et d'autres bases de données compatibles telles que YugabyteDB , CockroachDB et Aurora .
MySQL et d'autres bases de données compatibles telles que MariaDB et TiDB .
Microsoft SQL Server et toutes les bases de données et fournisseurs compatibles tels que Azure SQL et Amazon RDS .
Lisez le guide de démarrage officiel sur le site Web de SQLPage.
Le moyen le plus simple de commencer est de télécharger la dernière version à partir de la page des versions.
Téléchargez le binaire qui correspond à votre système d'exploitation (linux, macos ou windows).
Décompressez-le : tar -xzf sqlpage-*.tgz
Exécutez-le : ./sqlpage.bin
Pour exécuter sur un serveur, vous pouvez utiliser l'image docker :
Installer le menu fixe
Dans un terminal, exécutez la commande suivante :
docker run -it --name sqlpage -p 8080:8080 --volume "$(pwd):/var/www" --rm lovasoa/sqlpage
( "$(pwd):/var/www"
permet à sqlpage d'exécuter des fichiers SQL à partir de votre répertoire de travail actuel)
Créez un fichier appelé index.sql avec le contenu de cet exemple
Ouvrez https://localhost:8080 dans votre navigateur
En option, vous pouvez également monter un répertoire contenant le fichier de configuration de sqlpage, les composants personnalisés et les migrations (voir configuration.md) vers /etc/sqlpage
dans le conteneur.
docker run -it --name sqlpage -p 8080:8080 --volume "$(pwd)/source:/var/www" --volume "$(pwd)/configuration:/etc/sqlpage:ro" --rm lovasoa/sqlpage
Par exemple, vous pouvez utiliser :
Et placez votre site Web dans un dossier nommé source
et votre sqlpage.json
dans un dossier nommé configuration
.
Si vous souhaitez créer votre propre image Docker, il n'est pas recommandé de prendre l'image brute sqlpage comme base, car elle est extrêmement simplifiée et ne contiendra probablement pas les dépendances dont vous avez besoin. Au lieu de cela, vous pouvez prendre Debian comme base et simplement copier le binaire sqlpage de l'image officielle vers votre propre image :
DEbian:stable-slimCOPY --from=lovasoa/sqlpage:main /usr/local/bin/sqlpage /usr/local/bin/sqlpage
Nous fournissons des binaires compilés uniquement pour l'architecture x86_64, mais fournissons des images Docker pour d'autres architectures, notamment arm64 et armv7. Si vous souhaitez exécuter SQLPage sur un Raspberry Pi ou une instance cloud ARM moins chère, utiliser l'image Docker est le moyen le plus simple de le faire.
Une alternative pour les utilisateurs de Mac OS consiste à utiliser le package homebrew de SQLPage.
Installer un homebrew
Dans un terminal, exécutez les commandes suivantes :
brew install sqlpage
SQLPage est un serveur Web écrit en rust et distribué sous forme de fichier exécutable unique. Lorsqu'il reçoit une requête vers une URL se terminant par .sql
, il trouve le fichier SQL correspondant, l'exécute sur la base de données, en lui transmettant les informations de la requête Web sous forme de paramètres d'instruction SQL. Lorsque la base de données commence à renvoyer des lignes pour la requête, SQLPage mappe chaque élément d'information de la ligne à un paramètre dans l'un de ses modèles de composants prédéfinis et renvoie le résultat au navigateur de l'utilisateur.
Liste TODO : une application simple de liste de tâches, illustrant comment créer une application CRUD de base avec SQLPage.
Tracés, tableaux, formulaires et interactivité : une courte démo bien commentée montrant comment utiliser des tracés, des tableaux, des formulaires et l'interactivité pour filtrer des données en fonction d'un paramètre d'URL.
Tiny Splitwise Clone : une application de suivi des dépenses partagées
Corporate Conundrum : un jeu de société implémenté en SQL
Formulaires maître-détail : montre comment implémenter un ensemble simple de formulaires pour insérer des données dans des tables de base de données ayant une relation un-à-plusieurs.
Site Web officiel et documentation de SQLPage : Le code source SQL du site officiel du projet, https://sql.datapage.app
Galerie d'images : une galerie d'images où les utilisateurs peuvent se connecter et télécharger des images. Illustre la mise en œuvre d'un système d'authentification des utilisateurs utilisant des cookies de session et la gestion des téléchargements de fichiers.
Gestion des utilisateurs : une démo d'authentification avec enregistrement des utilisateurs, connexion, déconnexion et pages confidentielles. Utilise PostgreSQL.
Création d'une API JSON et intégration de composants React dans le frontend : montre comment intégrer un composant React dans un site Web SQLPage et comment créer facilement une API REST avec SQLPage.
Gestion des téléchargements de fichiers : une galerie d'images où les utilisateurs authentifiés peuvent publier de nouvelles images via un formulaire de téléchargement.
Importation de données en masse à partir de fichiers CSV : Un formulaire simple permettant aux utilisateurs d'importer des fichiers CSV pour remplir une table de base de données.
Exemple d'authentification avancée utilisant des procédures stockées PostgreSQL
Application web complexe en SQLite avec gestion des utilisateurs, téléchargements de fichiers, tracés, cartes, tableaux, menus, ...
Authentification unique : exemple de mise en œuvre de l'authentification OAuth et OpenID Connect (OIDC) dans SQLPage. La démo comprend également un client CAS (Central Authentication Service).
Thème sombre : montre comment permettre à l'utilisateur de basculer entre un thème clair et un thème sombre, et de stocker les préférences de l'utilisateur.
Vous pouvez essayer tous les exemples en ligne sans rien installer sur votre ordinateur en utilisant la démo en ligne de SQLPage sur replit.
SQLPage peut être configuré via un fichier de configuration placé dans sqlpage/sqlpage.json
ou des variables d'environnement telles que DATABASE_URL
ou LISTEN_ON
.
Pour plus d’informations, lisez configuration.md
.
De plus, des composants personnalisés peuvent être créés en plaçant des fichiers .handlebars
dans sqlpage/templates
. Exemple.
SQLPage prend en charge HTTP/2 et HTTPS de manière native et transparente. Définissez simplement SQLPAGE_HTTPS_DOMAIN=example.com
et SQLPage demandera automatiquement un certificat de confiance et commencera à chiffrer tout le trafic de votre utilisateur avec. Pas de configuration manuelle fastidieuse pour vous, et pas de messages ennuyeux "La connexion n'est pas sécurisée" pour vos utilisateurs !
Vous pouvez exécuter SQLpage sans serveur en le compilant dans une fonction AWS Lambda. Un moyen simple de le faire consiste à utiliser l'image Docker fournie :
docker build -t sqlpage-lambda-builder . -f lambda.Dockerfile --target builder docker exécute sqlpage-lambda-builder cat déployer.zip > sqlpage-aws-lambda.zip
Vous pouvez ensuite simplement ajouter vos propres fichiers SQL à sqlpage-aws-lambda.zip
et les télécharger sur AWS Lambda, en sélectionnant Runtime personnalisé sur Amazon Linux 2 comme runtime.
Lors de l'exécution sans serveur, vous pouvez inclure les fichiers SQL directement dans l'image que vous déployez. Mais si vous souhaitez pouvoir mettre à jour vos fichiers SQL à la volée sans créer de nouvelle image, vous pouvez stocker les fichiers directement dans la base de données, dans une table qui a la structure suivante :
CREATE TABLE sqlpage_files (chemin VARCHAR (255) CLÉ PRIMAIRE NON NULLe, contenu BLOB, last_modified TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
Assurez-vous de mettre à jour last_modified
chaque fois que vous mettez à jour le contenu d'un fichier (ou faites-le dans un TRIGGER). SQLPage réanalysera un fichier de la base de données uniquement lorsqu'il aura été modifié.
actix web gère les requêtes HTTP à une vitesse incroyable,
tabler gère le style pour des composants propres d'aspect professionnel,
Les icônes de table sont un grand ensemble d'icônes que vous pouvez sélectionner directement à partir de votre SQL,
Les guidons affichent des pages HTML à partir de modèles lisibles pour chaque composant.
Pourquoi utiliser SQL au lieu d’un véritable langage de programmation ? SQL n'est même pas Turing-complet !
Vous vous concentrez sur le mauvais problème. Si vous pouvez exprimer votre application de manière déclarative, vous devriez le faire, que ce soit en utilisant SQL ou un autre langage. Le code déclaratif est souvent plus concis, lisible, plus facile à raisonner et à déboguer que le code impératif.
SQL est plus simple que les langages traditionnels, souvent lisibles par des non-programmeurs, mais très puissant.
Si votre objectif est la complexité, notez que SQL est en fait Turing-complet.
Même sans requêtes récursives, une séquence d'instructions SQL pilotées par les interactions de l'utilisateur (comme SQLPage) serait toujours complète par Turing, vous permettant de créer un site Web alimenté par SQL qui fonctionne comme une machine de Turing.
Ce n’est pas parce que vous le pouvez que vous devriez le faire…
- quelqu'un est méchant sur Reddit
Il ne s’agit pas de « devrait » – il s’agit de « pourquoi pas ? » Continuez à colorier à l'intérieur des lignes si vous le souhaitez, mais nous serons ici pour nous amuser avec nos sites Web SQL.
Est-ce la même chose que Microsoft Access ?
Les objectifs sont similaires – créer des applications simples centrées sur les données – mais les outils diffèrent considérablement :
SQLPage est un serveur Web, pas une application de bureau.
SQLPage se connecte aux bases de données relationnelles robustes existantes ; Access essaie d' être une base de données.
L'accès est coûteux et exclusif ; SQLPage est open source.
SQLPage vous épargne les tourments de Visual Basic pour Applications.
Le nom fait-il référence à Microsoft FrontPage ?
FrontPage était un outil de création de sites Web statiques visuels populaire à la fin des années 90. Je n'en avais pas entendu parler jusqu'à ce que quelqu'un me le demande.
J'aime CSS. Je veux concevoir des sites Web, pas écrire du SQL.
Si vous souhaitez écrire votre propre HTML et CSS, vous pouvez créer des composants personnalisés en ajoutant un fichier .handlebars
dans sqlpage/templates
et en y écrivant votre HTML et CSS. (Exemple). Vous pouvez également utiliser le composant html
pour écrire du HTML brut ou le composant shell
pour inclure des scripts et des styles personnalisés.
Mais SQLPage estime que vous ne devriez pas vous soucier des rayons de bordure des boutons tant que vous n'avez pas un prototype fonctionnel. Nous fournissons des composants élégants prêts à l'emploi afin que vous puissiez vous concentrer sur votre modèle de données et itérer rapidement.
SQLPage est disponible en téléchargement sur plusieurs sources :
Nous apprécions les contributions ! SQLPage est construit avec Rust et utilise du javascript Vanilla pour ses parties frontales.
Consultez notre guide de contribution pour obtenir des instructions détaillées sur la configuration du développement, les tests et le processus de demande d'extraction.