http://hackage.haskell.org/package/sqlite-simple-0.4.9.0/docs/Database-SQLite-Simple.htmlを実行できるかどうか、query
またはquery_
戻り値の型タプルを明示的に指定せずに行を出力できるかどうかは誰でも知っています。デバッグ目的で?
または、このパッケージではない場合は、別のパッケージでしょうか?
http://hackage.haskell.org/package/sqlite-simple-0.4.9.0/docs/Database-SQLite-Simple.htmlを実行できるかどうか、query
またはquery_
戻り値の型タプルを明示的に指定せずに行を出力できるかどうかは誰でも知っています。デバッグ目的で?
または、このパッケージではない場合は、別のパッケージでしょうか?
さて、私は、上に構築されdirect-sqlite
たパッケージを使用して、1レベル深く行くことによって、大雑把な方法を見つけました。sqlite-simple
import Database.SQLite.Simple
import Database.SQLite3.Direct (exec, execWithCallback)
let sql = "SELECT * FROM table LIMIT 3"
let cb count names vals = print vals
execWithCallback (connectionHandle conn) sql cb
私の場合、次のようなものが出力されます。
[Just "1",Just "2016-01-23 11:25:39.16759",Just "val1"]
[Just "2",Just "2016-01-23 11:25:40.266674",Just "val2"]
[Just "3",Just "2016-01-23 11:25:41.396901",Just "val3"]
他の誰かがより良い方法を知っている場合は、共有してください!
私のライブラリに関連する質問を以前にスキャンしなかったことをお詫びします。
以下は、SELECT クエリから出てくる生の SQLite 値を出力する 1 つの方法です。それは超きれいでも明白でもありません。
アイデアは、すべての SQLite 行/列を文字列に変換するデバッグ型DebugShowType
とそのインスタンスを定義することです。FromField
newtype DebugShowType = DebugShowType String deriving (Eq, Show, Typeable)
instance FromField DebugShowType where
fromField f = cvt f . fieldData $ f where
cvt _ v = Ok $ DebugShowType (show v)
testShowRawValues :: IO ()
testShowRawValues = do
elems <- query_ conn "SELECT 13, 'foo'" :: IO [[DebugShowType]]
mapM_ (\v -> putStrLn (show v ++ "\n")) elems
これにより、次のように出力されます。
[DebugShowType "SQLInteger 13",DebugShowType "SQLText \"foo\""]
またDatabase.SQLite.Simple.setTrace
、どの値が SQL クエリに代入されるかを追跡するのにも役立ちます。