db

sqlite3がダブルクォートでエスケープされているcsvをインポートしてくれない件

どうしよう。 ODBC経由で接続 専用のプログラムを作る sqlite3を修正 とりあえず、CSVを読んでトランザクションを実行する書き捨てプログラムを書いて解決した。時間があったらsqlite3用のドライバとか入れて、サードパーティーのツールを使ってODBC経由で流…

pythonのsqlite3モジュールでトランザクションする方法メモ

pythonのsqlite3モジュールでトランザクションする方法をメモしておきます。なんか、ネットで調べてもなかなか日本語のサンプルが出てこなかったので。sqlite3.connect()のisolation_levelオプション引数に分離レベルに対応する値を渡すだけです。こんな形に…

ORMで木構造を扱う

リレーショナルDBで木構造を扱うためにPython向けのORマッパーを書きました。 yatt / python-tree-data-object-relational-mapper今は隣接リストモデルしか実装していないけれど入れ子集合モデル(https://secure.wikimedia.org/wikipedia/en/wiki/Nested_set…

python + wsgiで2フェーズ・コミットするKVSを作った

データベースの学習として2フェーズ・コミットを理解するために、2フェーズ・コミットで同期するKVSをwsgiアプリケーションとして作成しました。サーバとクライアント合わせて220行ぐらいです。https://github.com/yatt/2phase-commit-kvs 下で実行してるア…

データベースのテーブル結合アルゴリズムを調べた

入れ子ループ 一行づつ、全てのキーとチェックをかけて同じかチェックするよ ソートマージ 2つのテーブルをソートしてからチェックするのでキーの比較回数少ないよ セミジョイン 分散DB前提。キーをリモートホストに送信して部分的な結合結果を受け取って…

sqlite3のPRAGMA文で外部キー制約を有効にする

db

これまでsqlite3で外部キーを使ったことがなかったので知りませんでしたが、sqlite3はデフォルトでは外部キーのサポートが無効になっている事に気が付きました(バージョンは3.6.22)。テーブルのcreate時に外部キー制約を指定することはできるけれど、実際…

sqlite3でトリガを使う

db

sqlite3でSQLのトリガを試してみました。使うの初めて。トリガを使って、ある小さいアプリケーションで使われているDBのテーブルの最終更新時刻を記録したいと思います。以下は対象となるテーブルのひとつ、scheduleテーブルに行が挿入されたときフィールド…