SQLpage 是一個僅使用SQL的 Web 應用程式建構器。它旨在幫助資料科學家、分析師和商業智慧團隊快速建立強大的以資料為中心的應用程序,而無需擔心任何傳統的 Web 程式語言和概念。
使用 SQLPage,您可以編寫簡單的.sql
文件,其中包含對資料庫的查詢以選擇、分組、更新、插入和刪除數據,並且您可以獲得以文字、列表、網格、繪圖和表單形式顯示資料的美觀乾淨的網頁。
程式碼 | 結果 |
選擇 「清單」作為元件,「熱門網站」作為標題;SELECT 名稱作為標題, url 作為鏈接, 外殼類型 當 1 那麼“藍色” 其他“紅色” END 作為顏色, 描述、圖標、活動來自網站; | |
選擇「圖表」作為組件,「季度收入」作為標題,「區域」作為類型;SELECT 季度 AS x,SUM(收入) AS yFROM 財務組 按季度 | |
選擇「表單」作為元件,「使用者」作為標題,「建立新使用者」作為驗證;SELECT 名稱、類型、佔位符、 必需,描述FROM user_form;INSERT INTO userSELECT $first_name, $last_name, $birth_dateWHERE $first_name IS NOT NULL; | |
選擇“選項卡”作為組件,true 作為中心;選擇“顯示所有卡片”作為標題,“?”作為鏈接, $tab 處於活動狀態時為空;選擇 格式('顯示 %s 卡', 顏色) 作為標題, format('?tab=%s', color) 作為鏈接, $tab=color 作為活躍的 tab_example_cardsgroup 按顏色; 選擇“卡”作為組件;選擇 標題、描述、顏色 image_url 作為 top_image,連結來自 tab_example_cards,其中 $tab 為 null 或 $tab = color;選擇 'text' 作為元件,sqlpage.read_file_as_text('footer.md') 作為contents_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 映像:
安裝docker
在終端機中,執行以下命令:
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。如果您想在 Raspberry Pi 或更便宜的 ARM 雲端實例上執行 SQLPage,使用 docker 映像是最簡單的方法。
Mac OS 使用者的另一個選擇是使用 SQLPage 的自製程式包。
安裝自製軟體
在終端機中,執行以下命令:
brew install sqlpage
SQLPage 是一個用 Rust 編寫的 Web 伺服器,並作為單一執行檔分發。當它收到以.sql
結尾的 URL 的請求時,它會找到相應的 SQL 文件,在資料庫上運行它,並將來自 Web 請求的資訊作為 SQL 語句參數傳遞給它。當資料庫開始傳回查詢的行時,SQLPage 會將行中的每個資訊對應到其預定義元件範本之一中的參數,並將結果串流回使用者的瀏覽器。
TODO 清單:一個簡單的待辦事項清單應用程序,說明如何使用 SQLPage 建立基本的 CRUD 應用程式。
繪圖、表格、表單和互動性:一個簡短且評論良好的演示,展示瞭如何使用繪圖、表格、表單和互動性來根據 URL 參數過濾資料。
微小的分裂克隆:共享費用追蹤應用程式
Corporate Conundrum:一款以 SQL 實現的桌遊
主從表單:展示如何實作一組簡單的表單以將資料插入具有一對多關係的資料庫表中。
SQLPage自己的官方網站和文件:該專案官方網站的SQL原始碼,https://sql.datapage.app
圖片庫:使用者可以登入並上傳圖片的圖片庫。說明使用會話 cookie 的使用者驗證系統的實作以及檔案上傳的處理。
使用者管理:包含使用者註冊、登入、登出和機密頁面的身份驗證演示。使用 PostgreSQL。
製作 JSON API 並在前端整合 React 元件:展示如何在 SQLPage 網站中整合 React 元件,以及如何使用 SQLPage 輕鬆建立 REST API。
處理文件上傳:經過身份驗證的使用者可以透過上傳表單發布新圖像的圖片庫。
從 CSV 檔案匯入批次資料:一種簡單的表單,允許使用者匯入 CSV 檔案以填充資料庫表。
使用 PostgreSQL 預存程序的高階驗證範例
SQLite 中的複雜 Web 應用程序,具有使用者管理、文件上傳、繪圖、地圖、表格、選單等
單一登入:如何在 SQLPage 中實作 OAuth 和 OpenID Connect (OIDC) 驗證的範例。此演示還包括 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 函數來執行無伺服器 SQLpage。一個簡單的方法是使用提供的 docker 映像:
docker build -t sqlpage-lambda-builder 。 -f lambda.Dockerfile --目標建構器 docker run sqlpage-lambda-builder cat deploy.zip > sqlpage-aws-lambda.zip
然後,您只需將自己的 SQL 檔案新增至sqlpage-aws-lambda.zip
,並將其上傳至 AWS Lambda,選擇Amazon Linux 2 上的自訂執行時間作為執行時間。
執行無伺服器時,您可以將 SQL 檔案直接包含在要部署的映像中。但是,如果您希望能夠動態更新 sql 檔案而不建立新映像,則可以將檔案直接儲存在資料庫內,並儲存在具有以下結構的表中:
建立表格 sqlpage_files( 路徑 VARCHAR(255) NOT NULL PRIMARY KEY, 內容BLOB, 最後修改的時間戳(預設當前時間戳記);
確保每次更新檔案內容時都更新last_modified
(或在 TRIGGER 內執行)。只有當檔案被修改時,SQLPage 才會從資料庫重新解析檔案。
actix web 以令人難以置信的速度處理 HTTP 請求,
tabler 負責處理具有專業外觀的乾淨組件的樣式,
tabler 圖標是一大組圖標,您可以直接從 SQL 中選擇,
Handlebars 從每個元件的可讀範本中呈現 HTML 頁面。
為什麼要使用 SQL 而不是真正的程式語言? SQL 甚至不是圖靈完備的!
你關注的是錯誤的問題。如果您可以聲明式地表達您的應用程序,那麼您就應該這樣做——無論是使用 SQL 還是其他語言。聲明性程式碼通常比命令性程式碼更簡潔、可讀、更容易推理、更容易除錯。
SQL 比傳統語言更簡單,通常可供非程式設計師閱讀,但功能非常強大。
如果複雜性是您的目標,請注意 SQL 實際上是圖靈完整的。
即使沒有遞歸查詢,由使用者互動驅動的一系列 SQL 語句(如 SQLPage)仍然是圖靈完備的,使您能夠建立一個像圖靈機一樣運行的 SQL 驅動的網站。
僅僅因為你可以並不意味著你應該......
——有人在 Reddit 上表現得很刻薄
這不是關於“應該”,而是關於“為什麼不呢?”如果您願意,可以繼續在線條內著色,但我們將在這裡享受我們的 SQL 網站的樂趣。
這與 Microsoft Access 相同嗎?
目標相似——創建簡單的以數據為中心的應用程式——但工具有很大不同:
SQLPage 是一個 Web 伺服器,而不是桌面應用程式。
SQLPage 連接到現有的強大的關聯式資料庫; Access 試圖成為一個資料庫。
訪問是昂貴的並且是專有的; SQLPage 是開源的。
SQLPage 讓您免於 Visual Basic for Applications 的折磨。
該名稱是否引用了 Microsoft FrontPage?
FrontPage 是 90 年代末期流行的視覺化靜態網站建構器。直到有人問起我才聽過。
我喜歡CSS。我想設計網站,而不是寫 SQL。
如果您想編寫自己的 HTML 和 CSS,您可以透過在sqlpage/templates
中新增.handlebars
檔案並在其中編寫 HTML 和 CSS 來建立自訂元件。 (例子)。您也可以使用html
元件編寫原始 HTML,或使用shell
元件包含自訂腳本和樣式。
但 SQLPage 認為,在您擁有可工作的原型之前,您不應該擔心按鈕邊框半徑。我們提供開箱即用的美觀組件,以便您可以專注於資料模型並快速迭代。
SQLPage 可以從多個來源下載:
我們歡迎貢獻! SQLPage 使用 Rust 構建,並使用 vanilla javascript 作為其前端部分。
請參閱我們的貢獻指南,以了解有關開發設定、測試和拉取請求流程的詳細說明。