上川純
一
![]() |
sqlite はお手軽に SQL を利用するための仕組みです。 データベースが一つの UNIX ファイルとして管理されており、 データ ベースの作成・削除が簡便に行うことができること、 また、 サーバクライアントアーキテクチャではなく、 OS の提供するファイルシステムのロック機構を活用して ACID 特性を実現しているという特徴があります (図 4)*6 。 データベースを利用する場合においては、 データベースをサーバクライアントモデルで利用しようとすると、 データベースファ イル置き場やポート番号やホスト名やユーザ名やパスワードの設定が最低でも必要になりますが、 それらが必要なくなります。 そのため、 データベースのインスタンスを別に立ち上げなくてもよいんだけど、 ちょっと SQL を使いたいというようなクイッ クハックに便利です。
まず、 この記事に必要な関連パッケージをインストールしましょう。
apt-get install sqlite3 python-pysqlite2
|
sqlite3 という CUI のアプリケーションがあり、 一般的な SQL 文を利用することができます。 また、 ruby, perl, ocaml, haskell, common lisp, Smalltalk などの一般的なプログラミング言語用のバインディングも用意されており、 データベースを 利用することができます。
まず、 データベースを作成してみましょう。
$ sqlite3 debmtg.db
sqlite> |
存在しない新しいファイル名を指定すれば、 そのファイル名でデータベースが作成されます。 この時点で SQL 文 (CREATE TABLE) などが利用できます。
データベースも作成できたので、 データをつっこんでみましょう。 csv ファイルからデータベースにデータを挿入するケースを 考えてみます。 実は sqlite3 の .import コマンドを使えばよいのですが、 ここではプログラム言語のバインディングを活用し てインポートしてみます。
まず、 csv 形式でデータを用意します。
上川
,10
岩松,15 山田,9 |
csv ファイルを読み込み SQL コマンドを出力する python のコードを書きます。
sqlite3 コマンドを実行するとインタラクティブに SQL 文を入力することが可能です。
まず、 sqlite 独自の命令をつかってデータベースの構造を分析してみます。
$ sqlite3 debmtg.db
sqlite> .tables test sqlite> .dump test BEGIN TRANSACTION; CREATE TABLE test(name text, score number); INSERT INTO "test" VALUES(’ 上川’,10); INSERT INTO "test" VALUES(’ 岩松’,15); INSERT INTO "test" VALUES(’ 山田’,9); COMMIT; |
SQL 文でランキングを調べたり平均値を調べたりもできます。
sqlite> select name, score from test order by score;
山田|9 上川|10 岩松|15 sqlite> select sum(score)/count(score) from test; 11 |
以上、 簡単ですが、 sqlite の紹介でした。 ____________________________________________________________________________________________
Debian 勉強会資料
2008 年12 月20 日 初版第1 刷発行
東 京 エ リ ア
Debian 勉強会 (編集・印刷・発行)
__________________________