如何使用 Ruby 从 SQLite3 数据库中提取数据并将其输出为静态 HTML?

发布于 2024-12-29 21:31:25 字数 277 浏览 1 评论 0原文

我想编写一个脚本,从本地 SQLite3 数据库检索数据,然后将该数据格式化为 HTML 文件。

我不确定要使用什么“工具”,但我想我需要 sqlite3 gem,然后我正在考虑使用 Sinatra 来处理 HTML 位。

更新:我不想创建网络服务。我只想运行一个以 sqlite3 数据库作为输入的 Ruby 脚本,并提取一组特定的数据,然后将其格式化并输出为单个文件。我提到了 HTML,但任何像 Markdown 这样的东西都很棒,因为它可以以您想要的任何格式导出。

I want to write a script that retrieves data from a local SQLite3 database and then formats that data into an HTML file.

I'm not sure what "tools" to use, but I guess I'll need the sqlite3 gem and then I was thinking about using Sinatra for the HTML bit.

UPDATE: I'm not looking to create a web service. I just want to run a Ruby script with an sqlite3 database as input and extract a specific set of data, which I then want to format and output as a single file. I mentioned HTML, but anything like markdown would be great as this can then be exported in what ever format you want.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

许一世地老天荒 2025-01-05 21:31:25

如果您不需要 http 协议,我建议使用模板语言,例如 哈姆尔

require "rubygems"
require "haml"

template = Haml::Engine.new(<<-EOD)
%table
  - vs.each do |v|
    %tr
      %td= v
EOD
template.render(Object.new, :vs => ["a", "b", "c"])
#=> "<table>\n  <tr>\n    <td>a</td>\n  </tr>\n  <tr>\n    <td>b</td>\n  </tr>\n  <tr>\n    <td>c</td>\n  </tr>\n</table>\n" 

If you don't need http protocol I would suggest using template language, e.g. haml:

require "rubygems"
require "haml"

template = Haml::Engine.new(<<-EOD)
%table
  - vs.each do |v|
    %tr
      %td= v
EOD
template.render(Object.new, :vs => ["a", "b", "c"])
#=> "<table>\n  <tr>\n    <td>a</td>\n  </tr>\n  <tr>\n    <td>b</td>\n  </tr>\n  <tr>\n    <td>c</td>\n  </tr>\n</table>\n" 
烟沫凡尘 2025-01-05 21:31:25

我喜欢您选择 Sinatra 作为 Web 应用程序,并建议使用 Sequel 作为数据库适配器。这是一个简短的、未经测试的应用程序:

require 'sinatra'
require 'sequel'
require 'haml'

DB = Sequel.connect('sqlite://blog.db')
get '/' do
  @entries = DB[:posts].filter(live:true).order(:posted_on.desc).all
  haml 'home' # finds 'views/home.haml' and makes a string
end

get '/:postname' do
  @post = DB[:posts][short: params[:postname]]
  haml 'post'
end

home.haml

- # this will be wrapped in layout.haml if you have one
%h1 My Posts
%p Welcome to my site, I hope you like it.
#posts
  - @entries.each do |post|
    %h2{id:post[:short]}
      %a{href:post[:short]}= post[:title]
    %p= post[:overview]

post.haml

%h1= @post[:title]
%p#overview= @post[:overview]
 #contents= @post[:html]

对 Sinatra、Sequel 或 Haml 的完整介绍超出了 Stack Overflow 的范围。希望这能让你开始。

I like your choice of Sinatra for the web app and suggest Sequel for the database adapter. Here's a short, untested app:

require 'sinatra'
require 'sequel'
require 'haml'

DB = Sequel.connect('sqlite://blog.db')
get '/' do
  @entries = DB[:posts].filter(live:true).order(:posted_on.desc).all
  haml 'home' # finds 'views/home.haml' and makes a string
end

get '/:postname' do
  @post = DB[:posts][short: params[:postname]]
  haml 'post'
end

home.haml

- # this will be wrapped in layout.haml if you have one
%h1 My Posts
%p Welcome to my site, I hope you like it.
#posts
  - @entries.each do |post|
    %h2{id:post[:short]}
      %a{href:post[:short]}= post[:title]
    %p= post[:overview]

post.haml

%h1= @post[:title]
%p#overview= @post[:overview]
 #contents= @post[:html]

A full introduction to Sinatra, Sequel, or Haml is outside the scope of Stack Overflow. Hope this gets you started.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文