S
Sharon Rosner
Sequel is a new ORM tool for Ruby. Sequel provides the following
features:
* Thread safety and connection pooling. You can write multi-threaded
applications that connect to databases without worrying about handling
connections.
* A concise, chainable query DSL lets you stay close to the metal
without writing SQL. You don't have to define model classes.
* Datasets support filtering, ordering, summarizing, and joining.
* Records are fetched one at a time, so you can work with huge result
sets.
* Currently has adapters for Postgresql, SQLite and MySQL (preliminary
support).
* Model classes work in similar fashion to ActiveRecord (but are
currently missing some functionality.)
RDoc documentation is here: http://sequel.rubyforge.org
The source code is here: http://ruby-sequel.googlecode.com/svn/trunk
A Short Example:
require 'sequel/sqlite'
# open an in-memory SQLite database
DB = Sequel.open 'sqlite:/:memory:'
# create a table
DB.create_table :items do
primary_key :id, :integer, :auto_increment => true
column :name, :text
column rice, :float
end
# popuplate table
100.times {DB[:items] << {:name => "product#{rand(1000)}", rice =>
rand * 100}}
# create a dataset of highest priced products with a price over 70
expensive_stuff = DB[:items].filter('price >
70').reverse_orderprice).limit(10)
puts "There are #{expensive_stuff.count} expensive items."
puts "Most expensive items (in descending order)"
expensive_stuff.each {|i| puts "#{i[:name]} = #{i[rice]}"}
# print average of most expensive products
puts "Average of expensive stuff: #{expensive_stuff.avgprice)}"
features:
* Thread safety and connection pooling. You can write multi-threaded
applications that connect to databases without worrying about handling
connections.
* A concise, chainable query DSL lets you stay close to the metal
without writing SQL. You don't have to define model classes.
* Datasets support filtering, ordering, summarizing, and joining.
* Records are fetched one at a time, so you can work with huge result
sets.
* Currently has adapters for Postgresql, SQLite and MySQL (preliminary
support).
* Model classes work in similar fashion to ActiveRecord (but are
currently missing some functionality.)
RDoc documentation is here: http://sequel.rubyforge.org
The source code is here: http://ruby-sequel.googlecode.com/svn/trunk
A Short Example:
require 'sequel/sqlite'
# open an in-memory SQLite database
DB = Sequel.open 'sqlite:/:memory:'
# create a table
DB.create_table :items do
primary_key :id, :integer, :auto_increment => true
column :name, :text
column rice, :float
end
# popuplate table
100.times {DB[:items] << {:name => "product#{rand(1000)}", rice =>
rand * 100}}
# create a dataset of highest priced products with a price over 70
expensive_stuff = DB[:items].filter('price >
70').reverse_orderprice).limit(10)
puts "There are #{expensive_stuff.count} expensive items."
puts "Most expensive items (in descending order)"
expensive_stuff.each {|i| puts "#{i[:name]} = #{i[rice]}"}
# print average of most expensive products
puts "Average of expensive stuff: #{expensive_stuff.avgprice)}"