WebEngine

だらだらと綴る技術系メモ

Node.jsでSQLite3を使ってみる

環境

  • Ubuntu16.04
  • Node.js v7.7.1
  • npm 4.1.2


SQLite3をnpmでインストール

node.jsはサーバサイドでjavascriptを扱えるようにしたもの。当然、データベースも扱うことが できます。
今回はSQLiteというデータベースを使ってみます。ほかの選択肢としてはmongoDBなんかがあるみたいですね。

SQLiteはnpmを使ってインストールすることができます。

npm install sqlite3

実行時のディレクトリにnode_modulesというディレクトリができて、さらになかにsqlite3というディレクトリ が入ったはずです。


データを挿入する

SQLiteを直接立ち上げて、コマンドでテーブル定義などを行っても良いですが、今回は sqlite-insert.jsというスクリプトファイルを作成し、それを実行する過程でテーブル 定義などを行いつつ、データも挿入することにします。

var sqlite = require('sqlite3').verbose();                                          
var db = new sqlite.Database('test.sqlite');

db.serialize(function() {

  // テーブルがなければ作成
  db.run('CREATE TABLE IF NOT EXISTS students(name TEXT, age INT)');
 
  // プリペアードステートメントでデータ挿入
  var stmt = db.prepare('INSERT INTO students VALUES(?,?)');
  stmt.run(["Tanaka", 12]);
  stmt.run(["Sato", 13]);
  stmt.run(["Nakamura", 15]);
  stmt.finalize();

 });

db.close();

studentsテーブルは名前と年齢を管理するテーブルです。本当はIDなんかをつけた方が 良いのですが、今回はテストなので省略します。
実行はnode sqlite-insert.jsでできます。

プリペアードステートメントについては、以前MySQLで書いた記事があるので、そちらを参考にしてみてください。


データを取得する

つづいて、データベースからデータを取得するスクリプトを書いてみます。
ファイル名はsqlite-fetch.jsとでもしておきましょう。

var sqlite = require('sqlite3').verbose();                                          
var db = new sqlite.Database('test.sqlite');
 
db.serialize(function() {

  db.each("SELECT * FROM students", function(err, row) {
    console.log(row.name + ":" + row.age);
  });

});

db.close();

node sqlite-fetch.jsで実行します。
まあ、見ての通り、ターミナルにデータを表示するだけです。取得の際コールバック関数を 使っているのがnodeっぽいですよね。

ちなみに、いつのまにかtest.sqliteというファイルができているかと思いますが、そこに挿入した データが入っています。


参考