【问题标题】:Simple Local Database Solution for Ruby?Ruby 的简单本地数据库解决方案?
【发布时间】:2016-06-30 17:56:47
【问题描述】:

我正在尝试编写一个简单的 Ruby/Nokogiri 抓取工具,以从多个页面获取事件信息,然后将其输出到 CSV,该 CSV 将附加到每周发送的电子邮件中。

我已经完成了抓取组件和 CSV 组件,并且运行良好。但是,我现在意识到我需要知道何时添加了新事件,这意味着我需要某种数据库。理想情况下,我只会将其存储在本地。

我已经尝试过使用 ruby​​ gem 'sequel',但数据似乎不会在程序运行后持续存在。我是否需要下载一些数据库软件才能使用“续集”?另外我没有使用 Rails 框架,只是使用 Ruby。

非常感谢任何和所有指导!

【问题讨论】:

  • 您是否在常驻计算机上安装了 RDBMS 以允许您持久化数据?
  • 在放弃Sequel之前,你需要做的不仅仅是“涉猎”。如果数据没有持久化,那是因为您使用的是内存 SQLite 数据库。虽然它们对于某些任务非常有用,但持久数据库通常不是其中之一。相反,请考虑在磁盘上使用 SQLite,或者 PostgreSQL、MySQL 或您拥有的任何其他东西that Sequel supports。它非常有能力。 sequel.jeremyevans.net/rdoc/files/… 描述了如何使用磁盘上的 SQLite DB。
  • 你是绝对正确的@the-Tin-Man。该链接非常有帮助!非常感谢!

标签: ruby database csv sequel sequel-gem


【解决方案1】:

我猜你做了Sequel.sqlite,就像在 Sequel README 中的第一个示例中一样,它创建了一个内存中的 SQLite 数据库。要在文件系统而不是内存中创建数据库,只需传递一个路径,例如:

Sequel.sqlite("./my-database.db")

当然,这是假设您安装了 sqlite3 gem。如果给定的文件不存在,则会创建它。

这是covered in the Sequel docs

【讨论】:

  • 啊当然!!我按照 Sequel README 中的示例进行操作,并没有意识到当它说在内存中时,一旦程序结束运行,它就会被销毁。非常感谢@乔丹。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多