[Sy] Node.js から MySQL に接続してデータを insert するサンプル
2018/01/19
Node.js から mysql パッケージ を利用して、 MySQL に接続してランダムな数値を insert するサンプルコードです。
1. テスト用のデータベースとテーブルを MySQL に準備
MySQL にログインして、 node_test
という名前のデータベースを作成します。
$ mysql -u root -p
Enter password: [パスワードを入力]
・
・
・
mysql> create database node_test default character set utf8;
Query OK, 1 row affected (0.03 sec)
mysql> use node_test
Database changed
続けて、 scores
という「id、value」のシンプルなレコードを持つテーブルを作ります。
mysql> create table scores (
-> id int(11) not null auto_increment,
-> value float,
-> primary key (id)
-> ) engine=InnoDB default character set=utf8;
Query OK, 0 rows affected (0.05 sec)
mysql> show columns from scores;
+-------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| value | float | YES | | NULL | |
+-------+---------+------+-----+---------+----------------+
2 rows in set (0.02 sec)
今回は、このテーブルに対してランダムな数値を insert していきます。
2. JavaScript(Node.js) から MySQL に接続するコードを書く
作業用のディレクトリを適当につくります。
$ mkdir node_mysql
$ cd node_mysql
MySQL に接続するために mysql
というパッケージを npm
でインストールしておきます。
$ npm install mysql
$ npm list --depth=0
/Users/utano320/Documents/Develop/node_mysql
└── mysql@2.15.0
app.js
というファイル名でコードを作成します。
$ vim app.js
(app.js)
const mysql = require('mysql');
const con = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '[パスワード]',
database: 'node_test'
});
// 接続
con.connect((err) => {
if (err) throw err;
console.log('connected to mysql');
});
let data = {
value: Math.random()
};
// insert
con.query('insert into scores set ?', data, (err, res) => {
if (err) throw err;
console.log(data.value);
});
// 切断
con.end((err) => {
if (err) throw err;
console.log('disconnected to mysql');
});
3. 実行&確認
$ node app.js
connected to mysql
0.5453194169743927
disconnected to mysql
0.5453194169743927
というランダムな数値が1件 scores
テーブルに insert したというログが出ました。
MySQL側でテーブルのデータを確認してみます。
mysql> select * from scores;
+----+----------+
| id | value |
+----+----------+
| 1 | 0.545319 |
+----+----------+
1 row in set (0.01 sec)
insert されていれば成功です。