“You Can Just Use SQL”讨论了如何将 SQL 嵌入到 Sequel 表达式中,但如果这样做,您将无法利用 ORM 的强大功能。相反,我建议阅读和使用“Cheat Sheet”中的示例。
这是来自README 的一个经过调整的示例:
require 'sequel'
DB = Sequel.sqlite
DB.create_table :items do
primary_key :id
String :name
Float :price
end
items = DB[:items]
items.insert(:name => 'abc', :price => rand * 100)
items.insert(:name => 'def', :price => rand * 100)
items.insert(:name => 'ghi', :price => rand * 100)
此时,内存中的 SQLite DB 将存在并包含行。
items 的基本查询是一个选择:
items.sql # => "SELECT * FROM `items`"
如果我们检查我们得到的变量:
items # => #<Sequel::SQLite::Dataset: "SELECT * FROM `items`">
再次显示查询。
all 方法运行查询并返回结果:
items.all # => [{:id=>1, :name=>"abc", :price=>41.416988254871455}, {:id=>2, :name=>"def", :price=>40.44638070518766}, {:id=>3, :name=>"ghi", :price=>65.1898528586475}]
同样可以使用:
DB["select * from items"] # => #<Sequel::SQLite::Dataset: "select * from items">
同样,all 将从数据库中检索信息并将其返回:
DB["select * from items"].all # => [{:id=>1, :name=>"abc", :price=>33.294219608356926}, {:id=>2, :name=>"def", :price=>29.25412438270755}, {:id=>3, :name=>"ghi", :price=>6.19681273957694}]
不过,它并没有像 Sequel 那样开始展示 ORM 的强大功能。阅读自述文件,然后使用备忘单中的示例,它会更有意义。