node sqlite 插入数据_Node.JS实战44:非常好用的数据库:SQLite

在Node.JS中,如果选择轻量级、嵌入式数据库,Sqlite必定是首选。

83463ff932e81f40442f82aa21f2cc7a.png

它不需要像别的数据库一样事先得进行安装、配置,而是可以直接通过node install像安装三方模块一样安装、然后马上使用。

当然它的性能也是勿需质疑的强劲,亿级数据存储、异步处理毫无压力。这也是选择它的另一个理由。

安装

npm install sqlite3

这样除了安装sqlite3的npm包,也装了sqlite数据库。

sqlite是嵌入式数据库,是嵌入到客户端中。安装过程中sqlite3使用node-pre-gyp为各个平台下载指定的预编译的二进制文件。如果无法下载到预编译的二进制文件,sqlite3将使用node-gyp和源代码来构建扩展。

这个过程会出现两个的库:node-pre-gyp和node-gyp。他们是什么呢?

node-gyp是一个跨平台的命令行工具,用于编译C++编写的nodejs扩展,首先gyp是为Chromium项目创建的项目生成工具,可以从平台无关的配置生成平台相关的Visual Studio、Xcode、Makefile的项目文件,node-gyp就是将其集成到nodejs中。因为linux的二进制分发快平台做的并不好,所有npm为了方便干脆就直接源码分发,用户装的时候再现场编译。不过对有些项目二进制分发就比源码分发简单多了,所以还有个node-pre-gyp来直接二进制扩展的分发。

两者区别在于node-gyp是发布扩展的源码,然后安装时候编译;node-pre-gyp是直接发布编译后的二级制形式的扩展。

和sqlite3一样的需要基于node-gyp安装的npm模块也有很多,比如node-sass等,都是发布源代码,然后编译安装。

f4efec601e59175509436fd65ba1fd62.png

在现实使用中,编译环节不时会发生错误而中断,这时,一般选择重新执行命令,如依然错误,搜索错误信息在网上找解决方案,一般都可以通过。

基础操作

//数据库的名是"mydatebase.db"var sqlite3 = require("sqlite3");//创建数据库var database = new sqlite3.Database("mydatebase.db", function(err){    if (err){        console.log("new database error,",err.message);    }else{        console.log("new database success");        //创建表        database.run("create table if not exists sharewaf_data(time NUMERIC, domain TEXT, ip TEXT, lon_lat TEXT, address TEXT, url TEXT, type TEXT, agent TEXT)",function(err){            if(err){                console.log("create database error,",err.message);            }else{                console.log("create database success");                //插入数据                database.run("insert into sharewaf_data(time, domain, ip, lon_lat, address, url, type, agent) VALUES(?,?,?,?,?,?,?,?)",["time", "domain", "ip", "lon_lat", "taiyuan", "url", "type", "agent"],function(err){                    if(err){                        console.log("insert data error,",err.message);                    }else{                        console.log("insert data success");                        //查询                        database.all("select * from sharewaf_data", function(err, rows) {                            if(err){                                console.log("select from sharewaf_data error,",err.message);                            }else{                            console.log(rows);                            }                        });                    }                });            }        });    }});

上面的代码中,包含了创建数据库、创建表、插入数据、查询数据几个常见操作。因为是异的原因,所以每个下级操作都在上级操作的回调函数中。

执行效果:

017694f9a3537bb7eec7634c30fc279c.png

但略显示遗憾的是,sqlite3不支持数据库加密。对于安全性有要求的场景,需代码层面另外进行数据加密处理。

更多本系列文章:

Node.JS实战43:Prune,给项目瘦个身

Node.JS实战42:又一高端操作:API HOOK

Node.JS实战41:让命令行变的五颜六色

Node.JS实战40:压缩和解压文件

Node.JS实战39:Express文件上传一例

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值