Mae向きなブログ

Mae向きな日記のブログ版。ようやくこちらに移行してきました。

DataMapperについて

東京Ruby会議03のWebページを見ていたら,DataMapperを使ってみたくなりました。2/21に郵便番号を検索する簡単なサンプルを作っていたので,これをDataMapperを使って書き換えてみました。

ziptabale.rb

# -*- coding: utf-8 -*-
require 'rubygems'
require 'dm-core'

DataMapper.setup(:default, {
                   :adapter => 'sqlite3',
                   :database => 'zipcode_dm.db'
                 })

class Ziptable
  include DataMapper::Resource
  property :id, Serial
  property :code, String
  property :address, String
end

insert_db_dm.rb

# -*- coding: utf-8 -*-
require 'ziptable'
require 'nkf'
require 'csv'

Ziptable.auto_migrate!

CSV.foreach("45MIYAZA.CSV") do |row| 
  code = row[2]
  address = NKF::nkf('-w', row[6] + row[7] + row[8])
  Ziptable.create(:code => code, :address => address)
  puts code + " : " + address
end

search_db_dm.rb

# -*- coding: utf-8 -*-
require 'ziptable'

search_word = "橘通東"

result = Ziptable.first(:address.like => "%"+search_word+"%")
puts "#{result.code}\t#{result.address}"

実行

$ ruby insert_db_dm.rb
$ ruby search_db_dm.rb
8800805 宮崎県宮崎市橘通東