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
というファイルができているかと思いますが、そこに挿入した
データが入っています。