[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についてもっともっと色々と使ってみよっと。
長文お読み頂きましてありがとうございました。