Haskell力をあげるために、少しの間Pythonを封印してみることにした(職場で)。
いつもならSQLAlchemyを使うところでHDBCを使っているが、本を読んで分かった気になっていただけだったと思い知らされた。
使ってみてDBIっぽいなぁと思ったらゆるく参考にしているらしい
HDBC is modeled loosely on Perl's DBI interface http://search.cpan.org/~timb/DBI/DBI.pm, though it has also been influenced by Python's DB-API v2, JDBC in Java, and HSQL in Haskell. Database.HDBC
結果のフェッチの仕方を調べてみると用途に応じて色々なやり方で結果を返すことができるようになっていた。
- listで返すかassociation listで返すか、それともMapで返すか
- 正格、非性格
- 全てのrowを返すか、一つを返すか
- SQLValue型かMaybe String型で返すか
必ず答えが返ってくるのが分かっているなら、Maybe Stringで返してfromJustでstringにすればいい。自分のブログ(Flask製)のdatabaseを使ってみる。
import Database.HDBC import Database.HDBC.Sqlite3 import Data.Maybe main = do conn <- connectSqlite3 "/Users/kzfm/blog.db" stmt <- prepare conn "select title from entry" execute stmt [] results <- sFetchAllRows stmt mapM_ (putStrLn . fromJust) $ concat results
RWHの日本語版のEpubかmobiが欲しいなぁ。