SQLpage — это конструктор веб-приложений, поддерживающий только SQL . Он предназначен для специалистов по данным, аналитиков и групп бизнес-аналитики, позволяющих быстро создавать мощные приложения, ориентированные на данные, не беспокоясь о каких-либо традиционных языках и концепциях веб-программирования.
С помощью SQLPage вы пишете простые файлы .sql
, содержащие запросы к вашей базе данных для выбора, группировки, обновления, вставки и удаления ваших данных, и вы получаете красивые чистые веб-страницы, отображающие ваши данные в виде текста, списков, сеток, графиков и форм. .
Код | Результат |
ВЫБИРАТЬ «список» в качестве компонента, «Популярные веб-сайты» в качестве заголовка; ВЫБЕРИТЕ имя как заголовок, URL как ссылка, Тип КОРПУСА КОГДА 1 ТОГДА «синий» ИНАЧЕ 'красный' КОНЕЦ как цвет, описание, иконка, сайт activeFROM; | |
ВЫБЕРИТЕ «Диаграмма» в качестве компонента, «Квартальный доход» в качестве заголовка, «Область» в качестве типа; ВЫБЕРИТЕ квартал AS x, SUM(выручка) AS yИЗ финансовГРУППА ПО кварталу | |
ВЫБЕРИТЕ «форму» в качестве компонента, «Пользователь» в качестве заголовка, «Создать нового пользователя» в качестве подтверждения; ВЫБЕРИТЕ имя, тип, заполнитель, требуется, описаниеFROM user_form;INSERT INTO userSELECT $first_name, $last_name, $birth_dateWHERE $first_name НЕ NULL; | |
выберите «tab» в качестве компонента, true в качестве центра; выберите «Показать все карточки» в качестве заголовка, «?» как ссылка, $tab имеет значение null, поскольку активно; выберите format('Показать карты %s', цвет) в качестве заголовка, format('?tab=%s', color) как ссылка, $tab=цвет как активныйиз tab_example_cardsgroup по цвету; выберите «карту» в качестве компонента; выберите название, описание, цвет image_url как top_image, ссылка из tab_example_cards, где $tab имеет значение null или $tab = цвет; выберите «текст» в качестве компонента, sqlpage.read_file_as_text('footer.md') в качестве содержимого_md |
SQLite, включая возможность загрузки расширений, таких как Spatialite .
PostgreSQL и другие совместимые базы данных, такие как YugabyteDB , CockroachDB и Aurora .
MySQL и другие совместимые базы данных, такие как MariaDB и TiDB .
Microsoft SQL Server и все совместимые базы данных и поставщики, такие как Azure SQL и Amazon RDS .
Прочтите официальное руководство по началу работы на веб-сайте SQLPage.
Самый простой способ начать — загрузить последнюю версию со страницы выпусков.
Загрузите двоичный файл, соответствующий вашей операционной системе (Linux, MacOS или Windows).
Распакуйте его: tar -xzf sqlpage-*.tgz
Запустите его: ./sqlpage.bin
Для запуска на сервере вы можете использовать образ докера:
Установить докер
В терминале выполните следующую команду:
docker run -it --name sqlpage -p 8080:8080 --volume "$(pwd):/var/www" --rm lovasoa/sqlpage
( "$(pwd):/var/www"
позволяет sqlpage запускать файлы sql из вашего текущего рабочего каталога)
Создайте файл index.sql с содержимым из этого примера.
Откройте https://localhost:8080 в своем браузере.
При желании вы также можете смонтировать каталог, содержащий файл конфигурации sqlpage, пользовательские компоненты и миграции (см. Configuration.md), в /etc/sqlpage
в контейнере.
docker run -it --name sqlpage -p 8080:8080 --volume "$(pwd)/source:/var/www" --volume "$(pwd)/configuration:/etc/sqlpage:ro" --rm lovasoa/sqlpage
Например, вы можете использовать:
Поместите свой веб-сайт в папку с именем source
и ваш sqlpage.json
в папку с именем configuration
.
Если вы хотите создать собственный образ Docker, брать необработанный образ sqlpage в качестве основы не рекомендуется, так как он сильно урезан и, вероятно, не будет содержать нужных вам зависимостей. Вместо этого вы можете взять за основу Debian и просто скопировать бинарный файл sqlpage из официального образа в свой:
ИЗ debian:stable-slimCOPY --from=lovasoa/sqlpage:main /usr/local/bin/sqlpage /usr/local/bin/sqlpage
Мы предоставляем скомпилированные двоичные файлы только для архитектуры x86_64, но предоставляем образы Docker для других архитектур, включая Arm64 и Armv7. Если вы хотите запустить SQLPage на Raspberry Pi или более дешевом облачном экземпляре ARM, самый простой способ сделать это — использовать образ Docker.
Альтернативой для пользователей Mac OS является использование домашнего пакета SQLPage.
Установить доморощенный
В терминале выполните следующие команды:
brew install sqlpage
SQLPage — это веб-сервер, написанный на Rust и распространяемый в виде одного исполняемого файла. Когда он получает запрос на URL-адрес, заканчивающийся на .sql
, он находит соответствующий файл SQL, запускает его в базе данных, передавая ему информацию из веб-запроса в качестве параметров оператора SQL. Когда база данных начинает возвращать строки для запроса, SQLPage сопоставляет каждую часть информации в строке с параметром в одном из заранее определенных шаблонов компонентов и передает результат обратно в браузер пользователя.
Список TODO: простое приложение со списком дел, показывающее, как создать базовое CRUD-приложение с помощью SQLPage.
Графики, таблицы, формы и интерактивность: короткая хорошо прокомментированная демонстрация, показывающая, как использовать графики, таблицы, формы и интерактивность для фильтрации данных на основе параметра URL.
Крошечный разделенный клон: приложение для общего отслеживания расходов
Корпоративная головоломка: настольная игра, реализованная на SQL
Формы Master-Detail: показывает, как реализовать простой набор форм для вставки данных в таблицы базы данных, имеющие связь «один ко многим».
Собственный официальный веб-сайт и документация SQLPage: исходный код SQL для официального сайта проекта, https://sql.datapage.app.
Галерея изображений: Галерея изображений, где пользователи могут войти в систему и загружать изображения. Иллюстрирует реализацию системы аутентификации пользователей с использованием файлов cookie сеанса и обработку загрузки файлов.
Управление пользователями: демонстрационная версия аутентификации с регистрацией пользователя, входом в систему, выходом из системы и конфиденциальными страницами. Использует PostgreSQL.
Создание API JSON и интеграция компонентов React во внешний интерфейс: показано, как интегрировать компонент React на веб-сайт SQLPage и как легко создать REST API с помощью SQLPage.
Обработка загрузки файлов: галерея изображений, где авторизованные пользователи могут публиковать новые изображения через форму загрузки.
Массовый импорт данных из файлов CSV: простая форма, позволяющая пользователям импортировать файлы CSV для заполнения таблицы базы данных.
Пример расширенной аутентификации с использованием хранимых процедур PostgreSQL
Комплексное веб-приложение на SQLite с управлением пользователями, загрузкой файлов, графиками, картами, таблицами, меню и т. д.
Единый вход: пример реализации аутентификации OAuth и OpenID Connect (OIDC) в SQLPage. Демо-версия также включает клиент CAS (Центральная служба аутентификации).
Темная тема: демонстрирует, как разрешить пользователю переключаться между светлой и темной темой и сохранить предпочтения пользователя.
Вы можете попробовать все примеры онлайн, не устанавливая ничего на свой компьютер, используя онлайн-демонстрацию SQLPage на replit.
SQLPage можно настроить либо с помощью файла конфигурации, помещенного в sqlpage/sqlpage.json
, либо с помощью переменных среды, таких как DATABASE_URL
или LISTEN_ON
.
Для получения дополнительной информации прочтите configuration.md
.
Кроме того, можно создавать пользовательские компоненты, помещая файлы .handlebars
в sqlpage/templates
. Пример.
SQLPage изначально и прозрачно поддерживает HTTP/2 и HTTPS. Просто установите SQLPAGE_HTTPS_DOMAIN=example.com
, и SQLPage автоматически запросит доверенный сертификат и начнет шифровать с его помощью весь трафик вашего пользователя. Никакой утомительной ручной настройки и раздражающих сообщений «Соединение не защищено» для ваших пользователей!
Вы можете запустить SQLpage без сервера, скомпилировав его в функцию AWS Lambda. Самый простой способ сделать это — использовать предоставленный образ докера:
docker build -t sqlpage-lambda-builder. -f лямбда.Dockerfile --целевой конструктор Docker запустите sqlpage-lambda-builder cat Deploy.zip > sqlpage-aws-lambda.zip
Затем вы можете просто добавить свои собственные файлы SQL в sqlpage-aws-lambda.zip
и загрузить их в AWS Lambda, выбрав в качестве среды выполнения Custom runtime на Amazon Linux 2 .
При бессерверной работе вы можете включить файлы SQL непосредственно в развертываемый образ. Но если вы хотите иметь возможность обновлять файлы sql «на лету», не создавая новый образ, вы можете хранить файлы непосредственно внутри базы данных, в таблице, имеющей следующую структуру:
CREATE TABLE sqlpage_files(путь VARCHAR(255) NOT NULL ПЕРВИЧНЫЙ КЛЮЧ, содержимое BLOB, Last_modified TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
Обязательно обновляйте last_modified
каждый раз, когда обновляете содержимое файла (или делаете это внутри TRIGGER). SQLPage будет повторно анализировать файл из базы данных только в том случае, если он был изменен.
actix web обрабатывает HTTP-запросы с невероятной скоростью,
tabler обеспечивает профессиональный внешний вид чистых компонентов,
Значки таблиц — это большой набор значков, которые вы можете выбрать непосредственно из вашего SQL,
handlebars отображают HTML-страницы из читаемых шаблонов для каждого компонента.
Зачем использовать SQL вместо настоящего языка программирования? SQL даже не является полным по Тьюрингу!
Вы фокусируетесь не на той проблеме. Если вы можете выразить свое приложение декларативно, вам следует это сделать — используя SQL или другой язык. Декларативный код часто более краток, удобочитаем, его легче рассуждать и легче отлаживать, чем императивный код.
SQL проще традиционных языков, часто читается непрограммистами, но при этом очень мощный.
Если ваша цель — сложность, обратите внимание, что SQL на самом деле является полным по Тьюрингу.
Даже без рекурсивных запросов последовательность операторов SQL, управляемая взаимодействием с пользователем (например, SQLPage), все равно будет полной по Тьюрингу, что позволит вам создать веб-сайт на базе SQL, который будет функционировать как машина Тьюринга.
То, что вы можете, не означает, что вы должны...
— кто-то грубо ведет себя на Reddit
Речь идет не о «должен» — а о «почему бы и нет?» Продолжайте раскрашивать строки, если хотите, но мы будем здесь развлекаться с нашими веб-сайтами SQL.
Это то же самое, что Microsoft Access?
Цели схожи — создание простых приложений, ориентированных на данные, — но инструменты существенно различаются:
SQLPage — это веб-сервер, а не настольное приложение.
SQLPage подключается к существующим надежным реляционным базам данных; Access пытается быть базой данных.
Доступ является дорогостоящим и запатентованным; SQLPage имеет открытый исходный код.
SQLPage избавляет вас от мучений Visual Basic для приложений.
Является ли название ссылкой на Microsoft FrontPage?
FrontPage — визуальный статический конструктор веб-сайтов, популярный в конце 90-х. Я не слышал об этом, пока кто-то не спросил.
Мне нравится CSS. Я хочу разрабатывать веб-сайты, а не писать SQL.
Если вы хотите написать свой собственный HTML и CSS, вы можете создать собственные компоненты, добавив файл .handlebars
в sqlpage/templates
и написав там свои HTML и CSS. (Пример). Вы также можете использовать компонент html
для написания необработанного HTML или компонент shell
для включения пользовательских скриптов и стилей.
Но SQLPage считает, что вам не следует беспокоиться о радиусах границ кнопок, пока у вас не будет рабочего прототипа. Мы предоставляем красивые компоненты «из коробки», чтобы вы могли сосредоточиться на своей модели данных и быстро выполнять итерации.
SQLPage доступен для загрузки из нескольких источников:
Мы приветствуем вклады! SQLPage построен на Rust и использует стандартный JavaScript для своих частей интерфейса.
Ознакомьтесь с нашим Руководством для участников, чтобы получить подробные инструкции по настройке разработки, тестированию и процессу запроса на включение.