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