2019-03-31 11:00:21 +00:00
---
title: もう少しgauche-dbd-sqlite3で遊んでみた
author: kazu634
date: 2012-04-22
wordtwit_post_info:
- 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:5459;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}'
categories:
- gauche
- sqlite3
---
< div class = "section" >
< p >
使い方をもう少し勉強してみました。
< / p >
< h4 >
ソース
< / h4 >
< pre class = "syntax-highlight" >
< span class = "synError" > #!/usr/local/bin/gosh< / span >
< span class = "synComment" > ;; ==============================< / span >
< span class = "synComment" > ;; Libraries:< / span >
< span class = "synComment" > ;; ==============================< / span >
< span class = "synSpecial" > (< / span > use dbi< span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > use gauche.collection< span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > use gauche.test< span class = "synSpecial" > )< / span >
< span class = "synComment" > ;; ==============================< / span >
< span class = "synComment" > ;; Variables:< / span >
< span class = "synComment" > ;; ==============================< / span >
< span class = "synSpecial" > (< / span > < span class = "synStatement" > define< / span > < span class = "synConstant" > *db-file*< / span > < span class = "synConstant" > " test.db" < / span > < span class = "synSpecial" > )< / span >
< span class = "synComment" > ;; ==============================< / span >
< span class = "synComment" > ;; Functions:< / span >
< span class = "synComment" > ;; ==============================< / span >
< span class = "synComment" > ;; (execute-sql dbfile sql)< / span >
< span class = "synComment" > ;; Arguments:< / span >
< span class = "synComment" > ;; - dbfile: path-to-sqlite3-dbfile< / span >
< span class = "synComment" > ;; - sql: the sql to be executed< / span >
< span class = "synComment" > ;;< / span >
< span class = "synComment" > ;; Output:< / span >
< span class = "synComment" > ;; Collection objects that dbi module returns< / span >
< span class = "synSpecial" > (< / span > < span class = "synStatement" > define< / span > < span class = "synSpecial" > (< / span > execute-sql dbfile sql< span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > guard
< span class = "synSpecial" > (< / span > e < span class = "synSpecial" > ((< / span > < span class = "synConstant" > < dbi-parameter-error> < / span > e< span class = "synSpecial" > )< / span > < span class = "synSpecial" > (< / span > dbi-close connect< span class = "synSpecial" > ))< / span >
< span class = "synSpecial" > ((< / span > < span class = "synConstant" > < dbi-error> < / span > e< span class = "synSpecial" > )< / span > < span class = "synSpecial" > (< / span > exit < span class = "synConstant" > 1< / span > < span class = "synSpecial" > ))< / span >
< span class = "synSpecial" > (< / span > < span class = "synStatement" > else< / span > < span class = "synSpecial" > (< / span > raise e< span class = "synSpecial" > )))< / span >
< span class = "synSpecial" > (< / span > < span class = "synStatement" > let*< / span > < span class = "synSpecial" > ((< / span > connect < span class = "synSpecial" > (< / span > dbi-connect < span class = "synSpecial" > (< / span > < span class = "synIdentifier" > string-append< / span > < span class = "synConstant" > " dbi:sqlite3:" < / span >
dbfile< span class = "synSpecial" > )))< / span >
< span class = "synSpecial" > (< / span > query < span class = "synSpecial" > (< / span > dbi-prepare connect sql< span class = "synSpecial" > ))< / span >
< span class = "synSpecial" > (< / span > result < span class = "synSpecial" > (< / span > dbi-execute query< span class = "synSpecial" > )))< / span >
< span class = "synSpecial" > (< / span > dbi-close connect< span class = "synSpecial" > )< / span >
result< span class = "synSpecial" > )))< / span >
< span class = "synSpecial" > (< / span > < span class = "synStatement" > define< / span > < span class = "synSpecial" > (< / span > test-db-execute sql< span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > test* < span class = "synSpecial" > (< / span > format < span class = "synConstant" > " ~s" < / span > sql< span class = "synSpecial" > )< / span >
< span class = "synConstant" > #t< / span >
< span class = "synSpecial" > (< / span > dbi-open? < span class = "synSpecial" > (< / span > execute-sql < span class = "synConstant" > *db-file*< / span > sql< span class = "synSpecial" > ))))< / span >
< span class = "synSpecial" > (< / span > < span class = "synStatement" > define< / span > < span class = "synSpecial" > (< / span > gen-list al proc< span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > < span class = "synIdentifier" > map< / span > < span class = "synSpecial" > (< / span > < span class = "synStatement" > lambda< / span > < span class = "synSpecial" > (< / span > l< span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > proc l< span class = "synSpecial" > ))< / span >
al< span class = "synSpecial" > ))< / span >
< span class = "synSpecial" > (< / span > < span class = "synStatement" > define< / span > < span class = "synSpecial" > (< / span > gen-key-list al< span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > gen-list al < span class = "synIdentifier" > car< / span > < span class = "synSpecial" > ))< / span >
< span class = "synSpecial" > (< / span > < span class = "synStatement" > define< / span > < span class = "synSpecial" > (< / span > gen-value-list al< span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > gen-list al < span class = "synIdentifier" > cdr< / span > < span class = "synSpecial" > ))< / span >
< span class = "synSpecial" > (< / span > < span class = "synStatement" > define< / span > < span class = "synSpecial" > (< / span > append-list-string l< span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > fold < span class = "synSpecial" > (< / span > < span class = "synStatement" > lambda< / span > < span class = "synSpecial" > (< / span > data seed< span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > < span class = "synStatement" > if< / span > < span class = "synSpecial" > (< / span > < span class = "synIdentifier" > string=?< / span > seed < span class = "synConstant" > " " < / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > format < span class = "synConstant" > #f< / span >
< span class = "synSpecial" > (< / span > < span class = "synStatement" > cond< / span >
< span class = "synSpecial" > [(< / span > < span class = "synIdentifier" > number?< / span > data< span class = "synSpecial" > )< / span > < span class = "synConstant" > " ~A" < / span > < span class = "synSpecial" > ]< / span >
< span class = "synSpecial" > [(< / span > < span class = "synIdentifier" > string?< / span > data< span class = "synSpecial" > )< / span > < span class = "synConstant" > " '~A'" < / span > < span class = "synSpecial" > ]< / span >
< span class = "synSpecial" > [(< / span > < span class = "synIdentifier" > symbol?< / span > data< span class = "synSpecial" > )< / span > < span class = "synConstant" > " ~A" < / span > < span class = "synSpecial" > ])< / span >
data< span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > format < span class = "synConstant" > #f< / span >
< span class = "synSpecial" > (< / span > < span class = "synStatement" > cond< / span >
< span class = "synSpecial" > [(< / span > < span class = "synIdentifier" > number?< / span > data< span class = "synSpecial" > )< / span > < span class = "synConstant" > " ~A, ~A" < / span > < span class = "synSpecial" > ]< / span >
< span class = "synSpecial" > [(< / span > < span class = "synIdentifier" > string?< / span > data< span class = "synSpecial" > )< / span > < span class = "synConstant" > " ~A, '~A'" < / span > < span class = "synSpecial" > ]< / span >
< span class = "synSpecial" > [(< / span > < span class = "synIdentifier" > symbol?< / span > data< span class = "synSpecial" > )< / span > < span class = "synConstant" > " ~A, ~A" < / span > < span class = "synSpecial" > ])< / span >
seed
data< span class = "synSpecial" > )))< / span >
< span class = "synConstant" > " " < / span >
l< span class = "synSpecial" > ))< / span >
< span class = "synSpecial" > (< / span > < span class = "synStatement" > define< / span > < span class = "synSpecial" > (< / span > gen-insert-sql table al< span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > format < span class = "synConstant" > " INSERT INTO ~A (~A) VALUES (~A);" < / span >
table
< span class = "synSpecial" > (< / span > append-list-string < span class = "synSpecial" > (< / span > gen-key-list al< span class = "synSpecial" > ))< / span >
< span class = "synSpecial" > (< / span > append-list-string < span class = "synSpecial" > (< / span > gen-value-list al< span class = "synSpecial" > ))))< / span >
< span class = "synSpecial" > (< / span > < span class = "synStatement" > define< / span > < span class = "synSpecial" > (< / span > append-alist-string al< span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > fold < span class = "synSpecial" > (< / span > < span class = "synStatement" > lambda< / span > < span class = "synSpecial" > (< / span > data seed< span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > < span class = "synStatement" > if< / span > < span class = "synSpecial" > (< / span > < span class = "synIdentifier" > string=?< / span > seed < span class = "synConstant" > " " < / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > format < span class = "synConstant" > " ~A ~A" < / span >
< span class = "synSpecial" > (< / span > < span class = "synIdentifier" > car< / span > data< span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > < span class = "synIdentifier" > cdr< / span > data< span class = "synSpecial" > ))< / span >
< span class = "synSpecial" > (< / span > format < span class = "synConstant" > " ~A, ~A ~A" < / span >
seed
< span class = "synSpecial" > (< / span > < span class = "synIdentifier" > car< / span > data< span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > < span class = "synIdentifier" > cdr< / span > data< span class = "synSpecial" > ))))< / span >
< span class = "synConstant" > " " < / span >
al< span class = "synSpecial" > ))< / span >
< span class = "synSpecial" > (< / span > < span class = "synStatement" > define< / span > < span class = "synSpecial" > (< / span > gen-create-sql table schema< span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > format < span class = "synConstant" > " CREATE TABLE ~A (~A);" < / span >
table
< span class = "synSpecial" > (< / span > append-alist-string schema< span class = "synSpecial" > )))< / span >
< span class = "synSpecial" > (< / span > < span class = "synStatement" > define< / span > < span class = "synSpecial" > (< / span > test-db-select vecl sql< span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > test* < span class = "synSpecial" > (< / span > format < span class = "synConstant" > " ~s" < / span > sql< span class = "synSpecial" > )< / span >
vecl
< span class = "synSpecial" > (< / span > < span class = "synIdentifier" > map< / span > identity
< span class = "synSpecial" > (< / span > execute-sql < span class = "synConstant" > *db-file*< / span >
sql< span class = "synSpecial" > ))))< / span >
< span class = "synComment" > ;; ==============================< / span >
< span class = "synComment" > ;; Tests:< / span >
< span class = "synComment" > ;; ==============================< / span >
< span class = "synSpecial" > (< / span > test-start < span class = "synConstant" > " Gauche-dbd-sqlite3" < / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > test-section < span class = "synConstant" > " Test Utilities:" < / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > test* < span class = "synConstant" > " Key Arrangement Utility:" < / span >
< span class = "synSpecial" > '(< / span > date quote source md5< span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > gen-key-list
< span class = "synSpecial" > '((< / span > date < span class = "synConstant" > .< / span > < span class = "synConstant" > 1334152804< / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > quote < span class = "synConstant" > .< / span > < span class = "synConstant" > " Do not be evil." < / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > source < span class = "synConstant" > .< / span > < span class = "synConstant" > " http://www.google.com/" < / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > md5 < span class = "synConstant" > .< / span > < span class = "synConstant" > " ada3ff1732557af042540d34f37ed0cd" < / span > < span class = "synSpecial" > ))))< / span >
< span class = "synSpecial" > (< / span > test* < span class = "synConstant" > " Value Arrangement Utility:" < / span >
< span class = "synSpecial" > '(< / span > < span class = "synConstant" > 1334152804< / span >
< span class = "synConstant" > " Do not be evil." < / span >
< span class = "synConstant" > " http://www.google.com/" < / span >
< span class = "synConstant" > " ada3ff1732557af042540d34f37ed0cd" < / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > gen-value-list
< span class = "synSpecial" > '((< / span > date < span class = "synConstant" > .< / span > < span class = "synConstant" > 1334152804< / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > quote < span class = "synConstant" > .< / span > < span class = "synConstant" > " Do not be evil." < / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > source < span class = "synConstant" > .< / span > < span class = "synConstant" > " http://www.google.com/" < / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > md5 < span class = "synConstant" > .< / span > < span class = "synConstant" > " ada3ff1732557af042540d34f37ed0cd" < / span > < span class = "synSpecial" > ))))< / span >
< span class = "synSpecial" > (< / span > test* < span class = "synConstant" > " Concatnation Utility (in case of keys):" < / span >
< span class = "synConstant" > " date, quote, source, md5" < / span >
< span class = "synSpecial" > (< / span > append-list-string < span class = "synSpecial" > '(< / span > date quote source md5< span class = "synSpecial" > )))< / span >
< span class = "synSpecial" > (< / span > test* < span class = "synConstant" > " Concatnation Utility (in case of values):" < / span >
< span class = "synConstant" > " 1334152804, 'Do not be evil.', 'http://www.google.com/', 'ada3ff1732557af042540d34f37ed0cd'" < / span >
< span class = "synSpecial" > (< / span > append-list-string
< span class = "synSpecial" > '(< / span > < span class = "synConstant" > 1334152804< / span >
< span class = "synConstant" > " Do not be evil." < / span >
< span class = "synConstant" > " http://www.google.com/" < / span >
< span class = "synConstant" > " ada3ff1732557af042540d34f37ed0cd" < / span > < span class = "synSpecial" > )))< / span >
< span class = "synSpecial" > (< / span > test* < span class = "synConstant" > " Generating Insertion SQL:" < / span >
< span class = "synConstant" > " INSERT INTO quote (date, quote, source, md5) VALUES (1334152804, 'Do not be evil.', 'http://www.google.com/', 'ada3ff1732557af042540d34f37ed0cd');" < / span >
< span class = "synSpecial" > (< / span > gen-insert-sql
< span class = "synConstant" > " quote" < / span >
< span class = "synSpecial" > '((< / span > date < span class = "synConstant" > .< / span > < span class = "synConstant" > 1334152804< / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > quote < span class = "synConstant" > .< / span > < span class = "synConstant" > " Do not be evil." < / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > source < span class = "synConstant" > .< / span > < span class = "synConstant" > " http://www.google.com/" < / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > md5 < span class = "synConstant" > .< / span > < span class = "synConstant" > " ada3ff1732557af042540d34f37ed0cd" < / span > < span class = "synSpecial" > ))))< / span >
< span class = "synSpecial" > (< / span > test* < span class = "synConstant" > " Concatnation Utility (in case of CREATE sql)" < / span >
< span class = "synConstant" > " id INTEGER PRIMARY KEY AUTOINCREMENT, date NUMERIC, quote TEXT, source TEXT, md5 TEXT" < / span >
< span class = "synSpecial" > (< / span > append-alist-string
< span class = "synSpecial" > '((< / span > id < span class = "synConstant" > .< / span > < span class = "synConstant" > " INTEGER PRIMARY KEY AUTOINCREMENT" < / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > date < span class = "synConstant" > .< / span > < span class = "synConstant" > " NUMERIC" < / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > quote < span class = "synConstant" > .< / span > < span class = "synConstant" > " TEXT" < / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > source < span class = "synConstant" > .< / span > < span class = "synConstant" > " TEXT" < / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > md5 < span class = "synConstant" > .< / span > < span class = "synConstant" > " TEXT" < / span > < span class = "synSpecial" > ))))< / span >
< span class = "synSpecial" > (< / span > test* < span class = "synConstant" > " Generating Creation SQL:" < / span >
< span class = "synConstant" > " CREATE TABLE quote (id INTEGER PRIMARY KEY AUTOINCREMENT, date NUMERIC, quote TEXT, source TEXT, md5 TEXT);" < / span >
< span class = "synSpecial" > (< / span > gen-create-sql
< span class = "synConstant" > " quote" < / span >
< span class = "synSpecial" > '((< / span > id < span class = "synConstant" > .< / span > < span class = "synConstant" > " INTEGER PRIMARY KEY AUTOINCREMENT" < / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > date < span class = "synConstant" > .< / span > < span class = "synConstant" > " NUMERIC" < / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > quote < span class = "synConstant" > .< / span > < span class = "synConstant" > " TEXT" < / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > source < span class = "synConstant" > .< / span > < span class = "synConstant" > " TEXT" < / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > md5 < span class = "synConstant" > .< / span > < span class = "synConstant" > " TEXT" < / span > < span class = "synSpecial" > ))))< / span >
< span class = "synSpecial" > (< / span > test-section < span class = "synConstant" > " Table Creation:" < / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > test-db-execute
< span class = "synSpecial" > (< / span > gen-create-sql
< span class = "synConstant" > " quote" < / span >
< span class = "synSpecial" > '((< / span > id < span class = "synConstant" > .< / span > < span class = "synConstant" > " INTEGER PRIMARY KEY AUTOINCREMENT" < / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > date < span class = "synConstant" > .< / span > < span class = "synConstant" > " NUMERIC" < / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > quote < span class = "synConstant" > .< / span > < span class = "synConstant" > " TEXT" < / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > source < span class = "synConstant" > .< / span > < span class = "synConstant" > " TEXT" < / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > md5 < span class = "synConstant" > .< / span > < span class = "synConstant" > " TEXT" < / span > < span class = "synSpecial" > ))))< / span >
< span class = "synSpecial" > (< / span > test-section < span class = "synConstant" > " Data Insertion:" < / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > test-db-execute
< span class = "synSpecial" > (< / span > gen-insert-sql
< span class = "synConstant" > " quote" < / span >
< span class = "synSpecial" > '((< / span > date < span class = "synConstant" > .< / span > < span class = "synConstant" > 1334152804< / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > quote < span class = "synConstant" > .< / span > < span class = "synConstant" > " Do not be evil." < / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > source < span class = "synConstant" > .< / span > < span class = "synConstant" > " http://www.google.com/" < / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > md5 < span class = "synConstant" > .< / span > < span class = "synConstant" > " ada3ff1732557af042540d34f37ed0cd" < / span > < span class = "synSpecial" > ))))< / span >
< span class = "synSpecial" > (< / span > test-db-execute
< span class = "synSpecial" > (< / span > gen-insert-sql
< span class = "synConstant" > " quote" < / span >
< span class = "synSpecial" > '((< / span > id < span class = "synConstant" > .< / span > < span class = "synConstant" > 2< / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > date < span class = "synConstant" > .< / span > < span class = "synConstant" > 1334359203< / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (</ span > quote < span class = "synConstant" > .</ span > < span class = "synConstant" > " 抑止力とは、「戦う意思を持たない暴力」ではなく、「戦わない意志を持った暴力」のことなのだと思う。小さな違いだけれど、意思を示さない限り、それは「力」たりえない。 (via @medtoolz )" </ span >< span class = "synSpecial" > )</ span >
< span class = "synSpecial" > (< / span > source < span class = "synConstant" > .< / span > < span class = "synConstant" > " http://twitter.com/medtoolz/status/190930863851184129" < / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > md5 < span class = "synConstant" > .< / span > < span class = "synConstant" > " 6392e235cebdae0ac9c87ee958648fc0" < / span > < span class = "synSpecial" > ))))< / span >
< span class = "synSpecial" > (< / span > test-section < span class = "synConstant" > " Data Check:" < / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > test-db-select
< span class = "synSpecial" > '(< / span > < span class = "synConstant" > #< / span > < span class = "synSpecial" > (< / span > < span class = "synConstant" > 1< / span >
< span class = "synConstant" > 1334152804< / span >
< span class = "synConstant" > " Do not be evil." < / span >
< span class = "synConstant" > " http://www.google.com/" < / span >
< span class = "synConstant" > " ada3ff1732557af042540d34f37ed0cd" < / span > < span class = "synSpecial" > ))< / span >
< span class = "synConstant" > " SELECT * FROM quote WHERE id=1;" < / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > test-db-select
< span class = "synSpecial" > '(< / span > < span class = "synConstant" > #< / span > < span class = "synSpecial" > (< / span > < span class = "synConstant" > 2< / span >
< span class = "synConstant" > 1334359203< / span >
< span class = "synConstant" > " 抑止力とは、「戦う意思を持たない暴力」ではなく、「戦わない意志を持った暴力」のことなのだと思う。小さな違いだけれど、意思を示さない限り、それは「力」たりえない。 (via @medtoolz )" </ span >
< span class = "synConstant" > " http://twitter.com/medtoolz/status/190930863851184129" < / span >
< span class = "synConstant" > " 6392e235cebdae0ac9c87ee958648fc0" < / span > < span class = "synSpecial" > ))< / span >
< span class = "synConstant" > " SELECT * FROM quote WHERE id=2;" < / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > test-db-select
< span class = "synSpecial" > '(< / span > < span class = "synConstant" > #< / span > < span class = "synSpecial" > (< / span > < span class = "synConstant" > 1< / span >
< span class = "synConstant" > 1334152804< / span >
< span class = "synConstant" > " Do not be evil." < / span >
< span class = "synConstant" > " http://www.google.com/" < / span >
< span class = "synConstant" > " ada3ff1732557af042540d34f37ed0cd" < / span > < span class = "synSpecial" > )< / span >
< span class = "synConstant" > #< / span > < span class = "synSpecial" > (< / span > < span class = "synConstant" > 2< / span >
< span class = "synConstant" > 1334359203< / span >
< span class = "synConstant" > " 抑止力とは、「戦う意思を持たない暴力」ではなく、「戦わない意志を持った暴力」のことなのだと思う。小さな違いだけれど、意思を示さない限り、それは「力」たりえない。 (via @medtoolz )" </ span >
< span class = "synConstant" > " http://twitter.com/medtoolz/status/190930863851184129" < / span >
< span class = "synConstant" > " 6392e235cebdae0ac9c87ee958648fc0" < / span > < span class = "synSpecial" > ))< / span >
< span class = "synConstant" > " SELECT * FROM quote;" < / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > test-section < span class = "synConstant" > " Database Manipulation:" < / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > test-db-execute
< span class = "synConstant" > " UPDATE quote SET date=1000000000 WHERE id=1;" < / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > test-db-select
< span class = "synSpecial" > '(< / span > < span class = "synConstant" > #< / span > < span class = "synSpecial" > (< / span > < span class = "synConstant" > 1< / span >
< span class = "synConstant" > 1000000000< / span >
< span class = "synConstant" > " Do not be evil." < / span >
< span class = "synConstant" > " http://www.google.com/" < / span >
< span class = "synConstant" > " ada3ff1732557af042540d34f37ed0cd" < / span > < span class = "synSpecial" > ))< / span >
< span class = "synConstant" > " SELECT * FROM quote WHERE id=1;" < / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > test-db-execute
< span class = "synConstant" > " DELETE FROM quote WHERE id=1;" < / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > test-db-select
< span class = "synSpecial" > '(< / span > < span class = "synConstant" > #< / span > < span class = "synSpecial" > (< / span > < span class = "synConstant" > 2< / span >
< span class = "synConstant" > 1334359203< / span >
< span class = "synConstant" > " 抑止力とは、「戦う意思を持たない暴力」ではなく、「戦わない意志を持った暴力」のことなのだと思う。小さな違いだけれど、意思を示さない限り、それは「力」たりえない。 (via @medtoolz )" </ span >
< span class = "synConstant" > " http://twitter.com/medtoolz/status/190930863851184129" < / span >
< span class = "synConstant" > " 6392e235cebdae0ac9c87ee958648fc0" < / span > < span class = "synSpecial" > ))< / span >
< span class = "synConstant" > " SELECT * FROM quote;" < / span > < span class = "synSpecial" > )< / span >
< span class = "synComment" > ;; ==============================< / span >
< span class = "synComment" > ;; Teardown:< / span >
< span class = "synComment" > ;; ==============================< / span >
< span class = "synSpecial" > (< / span > sys-unlink < span class = "synConstant" > *db-file*< / span > < span class = "synSpecial" > )< / span >
< span class = "synSpecial" > (< / span > test-end< span class = "synSpecial" > )< / span >
< / pre >
< h4 >
実行結果
< / h4 >
< p >
実行すると、こんな感じになります:
< / p >
< pre class = "syntax-highlight" >
Testing Gauche-dbd-sqlite3 ...
< span class = "synStatement" > < < / span > Test Utilities:< span class = "synStatement" > > < / span > --------------------------------------------------------------
< span class = "synStatement" > test< / span > Key Arrangement Utility:, expects < span class = "synStatement" > (< / span > date quote < span class = "synStatement" > source< / span > md5< span class = "synStatement" > )< / span > < span class = "synStatement" > ==> < / span > ok
< span class = "synStatement" > test< / span > Value Arrangement Utility:, expects < span class = "synStatement" > (< / span > < span class = "synConstant" > 1334152804< / span > < span class = "synStatement" > " < / span > < span class = "synConstant" > Do not be evil.< / span > < span class = "synStatement" > " < / span > < span class = "synStatement" > " < / span > < span class = "synConstant" > http://www.google.com/< / span > < span class = "synStatement" > " < / span > < span class = "synStatement" > " < / span > < span class = "synConstant" > ada3ff1732557af042540d34f37ed0cd< / span > < span class = "synStatement" > " )< / span > < span class = "synStatement" > ==> < / span > ok
< span class = "synStatement" > test< / span > Concatnation Utility < span class = "synStatement" > (< / span > in < span class = "synStatement" > case< / span > of keys< span class = "synStatement" > )< / span > :, expects < span class = "synStatement" > " < / span > < span class = "synConstant" > date, quote, source, md5< / span > < span class = "synStatement" > " < / span > < span class = "synStatement" > ==> < / span > ok
< span class = "synStatement" > test< / span > Concatnation Utility < span class = "synStatement" > (< / span > in < span class = "synStatement" > case< / span > of values< span class = "synStatement" > )< / span > :, expects < span class = "synStatement" > " < / span > < span class = "synConstant" > 1334152804, 'Do not be evil.', 'http://www.google.com/', 'ada3ff1732557af042540d34f37ed0cd'< / span > < span class = "synStatement" > " < / span > < span class = "synStatement" > ==> < / span > ok
< span class = "synStatement" > test< / span > Generating Insertion SQL:, expects < span class = "synStatement" > " < / span > < span class = "synConstant" > INSERT INTO quote (date, quote, source, md5) VALUES (1334152804, 'Do not be evil.', 'http://www.google.com/', 'ada3ff1732557af042540d34f37ed0cd');< / span > < span class = "synStatement" > " < / span > < span class = "synStatement" > ==> < / span > ok
< span class = "synStatement" > test< / span > Concatnation Utility < span class = "synStatement" > (< / span > in < span class = "synStatement" > case< / span > of CREATE sql< span class = "synStatement" > )< / span > , expects < span class = "synStatement" > " < / span > < span class = "synConstant" > id INTEGER PRIMARY KEY AUTOINCREMENT, date NUMERIC, quote TEXT, source TEXT, md5 TEXT< / span > < span class = "synStatement" > " < / span > < span class = "synStatement" > ==> < / span > ok
< span class = "synStatement" > test< / span > Generating Creation SQL:, expects < span class = "synStatement" > " < / span > < span class = "synConstant" > CREATE TABLE quote (id INTEGER PRIMARY KEY AUTOINCREMENT, date NUMERIC, quote TEXT, source TEXT, md5 TEXT);< / span > < span class = "synStatement" > " < / span > < span class = "synStatement" > ==> < / span > ok
< span class = "synStatement" > < < / span > Table Creation:< span class = "synStatement" > > < / span > --------------------------------------------------------------
< span class = "synStatement" > test</ span > < span class = "synStatement" > " </ span >< span class = "synConstant" > CREATE TABLE quote (id INTEGER PRIMARY KEY AUTOINCREMENT, date NUMERIC, quote TEXT, source TEXT, md5 TEXT);</ span >< span class = "synStatement" > " </ span > , expects< span class = "synComment" > #t ==> ok</ span >
< span class = "synStatement" > < < / span > Data Insertion:< span class = "synStatement" > > < / span > --------------------------------------------------------------
< span class = "synStatement" > test</ span > < span class = "synStatement" > " </ span >< span class = "synConstant" > INSERT INTO quote (date, quote, source, md5) VALUES (1334152804, 'Do not be evil.', 'http://www.google.com/', 'ada3ff1732557af042540d34f37ed0cd');</ span >< span class = "synStatement" > " </ span > , expects< span class = "synComment" > #t ==> ok</ span >
< span class = "synStatement" > test</ span > < span class = "synStatement" > " </ span >< span class = "synConstant" > INSERT INTO quote (id, date, quote, source, md5) VALUES (2, 1334359203, '</ span >< span class = "synSpecial" > 抑止力とは、「戦う意思を持たない暴力」ではなく、「戦わない意志を持った暴力」のことなのだと思う。小さな違いだけれど、意思を示さない限り、それは「力」たりえない。</ span >< span class = "synConstant" > (via @medtoolz )', 'http://twitter.com/medtoolz/status/190930863851184129', '6392e235cebdae0ac9c87ee958648fc0');</ span >< span class = "synStatement" > " </ span > , expects< span class = "synComment" > #t ==> ok</ span >
< span class = "synStatement" > < < / span > Data Check:< span class = "synStatement" > > < / span > ------------------------------------------------------------------
< span class = "synStatement" > test< / span > < span class = "synStatement" > " < / span > < span class = "synConstant" > SELECT * FROM quote WHERE id=1;< / span > < span class = "synStatement" > " < / span > , expects < span class = "synComment" > (#(1 1334152804 " Do not be evil." " http://www.google.com/" " ada3ff1732557af042540d34f37ed0cd" )) ==> ok< / span >
< span class = "synStatement" > test</ span > < span class = "synStatement" > " </ span >< span class = "synConstant" > SELECT * FROM quote WHERE id=2;</ span >< span class = "synStatement" > " </ span > , expects < span class = "synComment" > (#(2 1334359203 " 抑止力とは、「戦う意思を持たない暴力」ではなく、「戦わない意志を持った暴力」のことなのだと思う。小さな違いだけれど、意思を示さない限り、それは「力」たりえない。 (via @medtoolz )" " http://twitter.com/medtoolz/status/190930863851184129" " 6392e235cebdae0ac9c87ee958648fc0" )) ==> ok</ span >
< span class = "synStatement" > test</ span > < span class = "synStatement" > " </ span >< span class = "synConstant" > SELECT * FROM quote;</ span >< span class = "synStatement" > " </ span > , expects < span class = "synComment" > (#(1 1334152804 " Do not be evil." " http://www.google.com/" " ada3ff1732557af042540d34f37ed0cd" ) #(2 1334359203 " 抑止力とは、「戦う意思を持たない暴力」ではなく、「戦わない意志を持った暴力」のことなのだと思う。小さな違いだけれど、意思を示さない限り、それは「力」たりえない。 (via @medtoolz )" " http://twitter.com/medtoolz/status/190930863851184129" " 6392e235cebdae0ac9c87ee958648fc0" )) ==> ok</ span >
< span class = "synStatement" > < < / span > Database Manipulation:< span class = "synStatement" > > < / span > -------------------------------------------------------
< span class = "synStatement" > test</ span > < span class = "synStatement" > " </ span >< span class = "synConstant" > UPDATE quote SET date=1000000000 WHERE id=1;</ span >< span class = "synStatement" > " </ span > , expects< span class = "synComment" > #t ==> ok</ span >
< span class = "synStatement" > test< / span > < span class = "synStatement" > " < / span > < span class = "synConstant" > SELECT * FROM quote WHERE id=1;< / span > < span class = "synStatement" > " < / span > , expects < span class = "synComment" > (#(1 1000000000 " Do not be evil." " http://www.google.com/" " ada3ff1732557af042540d34f37ed0cd" )) ==> ok< / span >
< span class = "synStatement" > test</ span > < span class = "synStatement" > " </ span >< span class = "synConstant" > DELETE FROM quote WHERE id=1;</ span >< span class = "synStatement" > " </ span > , expects< span class = "synComment" > #t ==> ok</ span >
< span class = "synStatement" > test</ span > < span class = "synStatement" > " </ span >< span class = "synConstant" > SELECT * FROM quote;</ span >< span class = "synStatement" > " </ span > , expects < span class = "synComment" > (#(2 1334359203 " 抑止力とは、「戦う意思を持たない暴力」ではなく、「戦わない意志を持った暴力」のことなのだと思う。小さな違いだけれど、意思を示さない限り、それは「力」たりえない。 (via @medtoolz )" " http://twitter.com/medtoolz/status/190930863851184129" " 6392e235cebdae0ac9c87ee958648fc0" )) ==> ok</ span >
passed.
< / pre >
2019-04-02 16:06:15 +00:00
< / div >