SQLite是一种轻量级的嵌入式关系型数据库管理系统,它以库的形式存在,可以嵌入到应用程序中。它使用简单的、基于文件的数据库格式,不需要独立的服务器进程,非常适合在资源有限的环境中使用。
总之,SQLite在轻量级应用和资源受限环境下具有优势,适合那些对性能要求不高、数据量较小或者需要方便集成的场景。
使用Node.js操作SQLite数据库有多种方式,其中常用的方式包括使用sqlite3模块、sequelize模块和knex模块。每种方式都有其特点和适用场景。
哪种方式最好用取决于实际需求。如果需要更底层的数据库访问接口或对数据库操作有更细粒度的控制,可以选择sqlite3模块。如果需要使用ORM进行数据库操作或有复杂业务需求,可以选择sequelize模块。如果需要更灵活地构建SQL查询语句或有特定的查询需求,可以选择knex模块。
一般是根据项目需求选择适合的方式使用Node.js操作SQLite数据库。
官网介绍:
KneX可以在Node.js和浏览器中用作SQL查询构建器,但受WebSQL的限制(如不能删除表或读取模式)。 强烈反对在浏览器中编写在服务器上执行的SQL查询,因为这可能会导致严重的安全漏洞。 在WebSQL之外构建的浏览器主要用于学习目的-例如,您可以打开控制台并使用kneX对象在此页面上构建查询。
KneX的主要目标环境是Node.js,您将需要安装KneX库,然后安装相应的数据库库:PG for PostgreSQL、CockroachDB和Amazon RedShift、PG-Native for PostgreSQL和Native C++libpq绑定(需要安装PostgresSQL才能链接到它)、MySQL for MySQL或MariaDB、SQLite3 for SQLite3或Destous for MSSQL。
使用knex之前先得安装knex和数据库驱动,我这里用的是sqlite数据库,所以需要安装sqlite3
$ npm install knex --save
# Then add one of the following (adding a --save) flag:
$ npm install pg
$ npm install pg-native
$ npm install sqlite3
$ npm install better-sqlite3
$ npm install mysql
$ npm install mysql2
$ npm install oracledb
$ npm install tedious
根据自己的需要选择合适的数据库驱动即可
const knex = require('knex')({
client: 'sqlite3',
connection: {
filename: './database.sqlite'
}
});
在实例化knex时,可以传入一些配置参数来进行数据库连接和其他相关配置。常用的配置参数如下:
以下是一个示例代码,演示了实例化knex时的配置参数:
const knex = require('knex')({
client: 'sqlite3',
connection: {
filename: './data/db.sqlite3'
},
pool: {
min: 2,
max: 10
},
migrations: {
directory: './migrations',
tableName: 'knex_migrations'
},
seeds: {
directory: './seeds'
},
debug: true
});
module.exports = knex;
上述示例代码中,使用SQLite3作为数据库类型,指定了数据库文件路径。同时配置了连接池的最小连接数和最大连接数。定义了迁移文件和种子数据文件的目录,以及迁移记录表的表名。开启了调试模式,输出SQL查询语句和参数。
根据实际需求,可以根据以上配置参数进行灵活的配置。具体的配置项及其含义可以参考knex的官方文档。
在使用knex创建表之前,可以通过knex.schema.hasTable()
方法检查表是否已经存在。以下是一个使用knex创建表前判断表是否存在的示例代码:
knex.schema.hasTable('users').then((exists) => {
if (!exists) {
return knex.schema.createTable('users', (table) => {
table.increments('id').primary();
table.string('name');
table.string('email');
});
}
}).then(() => {
console.log('Table created successfully');
}).catch((err) => {
console.error(err);
});
在上述代码中,首先使用knex.schema.hasTable()
方法检查名为"users"的表是否存在。如果不存在,则执行创建表的操作;如果存在,则直接跳过创建表的步骤。这样可以确保在创建表之前先判断表是否已存在。
通过这种方式,可以避免重复创建表或导致错误。需要注意的是,在实际开发中,根据业务需求可能需要对表结构进行更精确的判断,比如检查是否存在特定的列等,可以根据具体情况进行扩展。
当使用knex操作SQLite数据库时,可以按照以下方式进行增删改查操作:
knex('users').insert({
name: 'John Doe',
email: 'john.doe@example.com'
}).then(() => {
console.log('Data inserted successfully');
}).catch((err) => {
console.error(err);
});
knex.select().from('users').then((rows) => {
rows.forEach((row) => {
console.log(row.name, row.email);
});
}).catch((err) => {
console.error(err);
});
knex('users')
.where('id', 1)
.update({ name: '前端少年汪' })
.then(() => {
console.log('Data updated successfully');
}).catch((err) => {
console.error(err);
});
knex('users')
.where('id', 1)
.del()
.then(() => {
console.log('Data deleted successfully');
}).catch((err) => {
console.error(err);
});
以上代码演示了使用knex操作SQLite数据库的基本增删改查操作。根据实际需求,可以使用knex提供的更多方法和功能来完成更复杂的数据库操作。