Memoize |
BasicWerk
EC Support
Technique
Facebook
|
20140614190251_factor_low_lebel_sqlite |
factor_low_lebel_sqlite
http://concatenative.org/wiki/view/Factor/DB を参考に sqlite3 の DB を Factor からいじってみる。
Factor 的には Tuple で操作することを押してるみたいなので、ここで紹介するオーソドックスな SQL Statement を使ったやり方は色んな意味で low-lebel ってことになるが・・・。
まずはこれらを USING: IN: scratchpad USING: db.sqlite db io.files io.files.temp destructors ; ! sqlite3 をよく使うなら save しておこう。
最低限の使い方。 ! DB につなげる。 IN: scratchpad "/full-path-to/sample.db" temp-file <sqlite-db> db-open db-connection set ! サンプルテーブル IN: scratchpad "CREATE TABLE foo (id INTEGER PRIMARY KEY, name, age INTEGER);" sql-command IN: scratchpad "INSERT INTO foo VALUES (1, 'Mary', 33), (2, 'Ann', 27), (3, 'John', 69);" sql-command ! query IN: scratchpad "SELECT * FROM foo;" sql-query . { { "1" "Mary" "33" } { "2" "Ann" "27" } { "3" "John" "69" } }
DB を切り離す。 IN: scratchpad db-connection get dispose
もう一つの方法。 with-db を使って open/close の手間をなくす。 ! 使う DB 用にワードを定義しておく IN: scratchpad : with-sample-db ( quot -- ) "/full-path-to/sample.db" temp-file <sqlite-db> swap with-db ; inline IN: scratchpad [ "SELECT * FROM foo;" sql-query . ] with-sample-db { { "1" "Mary" "33" } { "2" "Ann" "27" } { "3" "John" "69" } }
http://docs.factorcode.org/content/article-db-lowlevel-tutorial.html http://oss.infoscience.co.jp/factor/docs.factorcode.org/content/vocab-db.sqlite.html http://docs.factorcode.org/content/article-db-tuples-tutorial.html
|
© Shin Nakamura/BasicWerk 2014 |