motivation:
- modify my previous sqlite utility to allow for table name definition & auto table creation
requirements/environment:
- the requirements and environment are the same as in my previous post
code:
require 'rubygems' require 'sqlite3' class Storage def initialize @db = SQLite3::Database.new( 'sqlite' ) end def create(table) begin @db.execute( %{ CREATE TABLE #{table} (key varchar(100) PRIMARY KEY, value varchar(1000)) } ) rescue SQLite3::SQLException => details # puts details end end def use(table) @table = table self.create( table ) return self end def get(key) results = @db.get_first_row( %{ SELECT value FROM #{@table} WHERE key='#{key}' } ) if results return results[0] end end def set(key, val) result = @db.execute( %{ REPLACE INTO %s (key, value) VALUES ('%s', '%s') } % [@table, key, val ] ) end end
usage:
require 'rubygems' require 'sqlite3' require 'json' Storage.new.use( 'user' ).set( 'user123', { :str => 'orale!' }.to_json ) json = Storage.new.use( 'user' ).get( 'user123' ) p JSON.parse json
notes:
- DataMapper looks like it might provide much of this functionality. If my script’s complexity continues to increase, I’m inclined to incorporate a more sophisticated solution to run it. Thoughts?
One thought on “updated Ruby utility for simple SQLite3 key/val storage”
Comments are closed.