[node] node.jsでsqlite3を使う方法。インストールから実装サンプルまで。苦労点も。
node.jsをアプリケーションサーバーのとして使う為に、
sqlite3という軽量なDBをnode.jsで扱うことに取り組みました。
sqlite3のインストール、sqlite3用のnode.jsモジュールの追加、 実装サンプルをブログに残したいと思います。苦労した点もあったので書きます。
なお、node.jsやnpmのインストールは、こちら(node.jsを始めました!とっても簡単なインストール編)を参照ください。

今回は、Ubuntuに導入する手順ですが、他のOSでも似たようにしてみて下さい。
バージョンの高い開発版を今回はインストールしました。
このバージョンが低いと、後続のインストール処理で依存関係の解消ができず失敗してしまいます。。
動作確認は、以下のコマンドを打って、バージョンが表示されたらOK。
npmで行う場合には、以下のコマンドでできます。
Proxyがあったので、proxy設定を以下のように行うと上手くいきました。http, httpsともにプロキシ設定が必要なようです。
そこでnpmは諦めて、gitからソースコードをダウンロード&インストールしました。
以下の感じです。
これでインストール完了です。
node.jsで、「require("sqlite3")」と使いたいので、ディレクトリ名を変えて、またnode_modulesディレクトリに移動します。
node_modulesの読み込みルールについては、こちらLoading from node_modules Floders(日本語)を参照ください。
ちゃんと導入できたか、確認してみます。
テーブルの作成、データの登録、更新、参照を行うサンプルです。
上記内容を、「dbfirst.js」というファイル名で保存して、以下のように実行すると 動きます。
上記サンプルで利用した関数以外にもAPI説明がありますので、もし興味があればぜひ。
https://github.com/developmentseed/node-sqlite3
node.jsについてもっともっと色々と使ってみよっと。
長文お読み頂きましてありがとうございました。
sqlite3のインストール、sqlite3用のnode.jsモジュールの追加、 実装サンプルをブログに残したいと思います。苦労した点もあったので書きます。
なお、node.jsやnpmのインストールは、こちら(node.jsを始めました!とっても簡単なインストール編)を参照ください。

sqlite3のインストール
node.jsで使うsqlite3をイントールします。 (何とMacでは最初から入ってました。)今回は、Ubuntuに導入する手順ですが、他のOSでも似たようにしてみて下さい。
$ sudo apt-get install libsqlite3-dev
ここでのポイントは、インストールするsqlite3のバージョンが3.6以上でないとだめという点です。バージョンの高い開発版を今回はインストールしました。
このバージョンが低いと、後続のインストール処理で依存関係の解消ができず失敗してしまいます。。
動作確認は、以下のコマンドを打って、バージョンが表示されたらOK。
$ sqlite3 -version
node-sqlite3を導入する
node.jsでsqlite3を利用する為に、node-sqlite3をインストールします。npmで行う場合には、以下のコマンドでできます。
$ npm install sqlite3最初、上記コマンドを発行したら、dnsの問題でエラー終了しました。
Proxyがあったので、proxy設定を以下のように行うと上手くいきました。http, httpsともにプロキシ設定が必要なようです。
npm config set proxy http://プロキシサーバー:ポート番号 npm config set https-proxy http://プロキシサーバー:ポート番号Macだと上手くいくのですが、Ubuntuだとなぜか上手くいかず。。 依存関係の問題を解消出来ないようでした。
そこでnpmは諦めて、gitからソースコードをダウンロード&インストールしました。
以下の感じです。
$ git clone http://github.com/developmentseed/node-sqlite3.git
$ cd node-sqlite3 $ ./Configure
$ make $ make install
これでインストール完了です。
node.jsで、「require("sqlite3")」と使いたいので、ディレクトリ名を変えて、またnode_modulesディレクトリに移動します。
node_modulesの読み込みルールについては、こちらLoading from node_modules Floders(日本語)を参照ください。
$ cd ../ $ mv node-sqlite3 sqlite3 $ mv sqlite3 node_modules/
ちゃんと導入できたか、確認してみます。
$ node
> require("sqlite3")
/* ここにrequire("sqlite3")の内容が出たらOK */
node.jsでsqlite3を使うサンプル
以下のサンプルを作成してみました。テーブルの作成、データの登録、更新、参照を行うサンプルです。
// sqlite3を使う準備
var sqlite3 = require("sqlite3").verbose();
// :memory:を指定すると揮発性のDBができる。
// DBファイルを指定する事で、永続化したDBを扱う事もができる。
var db = new sqlite3.Database(":memory:");
// serialize関数を使うと、
// それぞれの行が実行されたら、次の行が実行される。
// parallel関数を用いることで、平行実行もできる。
db.serialize(function () {
// テーブルを作成する。
db.run("CREATE TABLE team (info TEXT)");
// データを登録する。
var stmt = db.prepare("INSERT INTO team VALUES (?)");
for (var i = 0; i < 10; i++)
stmt.run("team " + i);
stmt.finalize();
// データを更新する。
var stmt2 = db.prepare("UPDATE team SET info = ? WHERE info = ?");
for (var i = 0; i < 10; i+=3)
stmt2.run("team 10" + i, "team " + i);
stmt2.finalize();
//参照する。
// 参照用関数は他にもあるが、今回は取得したものを1件ずつ扱うeach関数を利用する。
// 引数(row)のプロパティに、SELECT句で指定した要素があるので、
// たとえば「row.info」といったアクセスで値を取り出せる。
db.each("SELECT rowid AS id, info FROM team", function (err, row) {
console.log(row.id + " : " + row.info);
});
});
// DBを閉じる。
db.close();
上記内容を、「dbfirst.js」というファイル名で保存して、以下のように実行すると 動きます。
$ node dbfirst.js
参考資料
node-sqlite3のGitHubのページをスゴく参考にしました。ありがとうございます(^ー^)ノ上記サンプルで利用した関数以外にもAPI説明がありますので、もし興味があればぜひ。
https://github.com/developmentseed/node-sqlite3
最後に
node.jsでDBが使えるようになると、本格的なWebアプリケーションも組めそうです(*´∇`*)node.jsについてもっともっと色々と使ってみよっと。
長文お読み頂きましてありがとうございました。





