欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用node操作SQLite的方法

 更新時間:2023年10月22日 08:46:10   作者:前端少年汪  
SQLite是一種輕量級的嵌入式關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它以庫的形式存在,可以嵌入到應用程序中,使用Node.js操作SQLite數(shù)據(jù)庫有多種方式,其中常用的方式包括使用sqlite3模塊、sequelize模塊和knex模塊,本文將詳細的給大家介紹這幾種方式,需要的朋友可以參考下

什么是sqlit

SQLite是一種輕量級的嵌入式關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它以庫的形式存在,可以嵌入到應用程序中。它使用簡單的、基于文件的數(shù)據(jù)庫格式,不需要獨立的服務器進程,非常適合在資源有限的環(huán)境中使用。

SQLite的優(yōu)點

  • 簡單易用:SQLite的API簡單明了,學習曲線低,使用方便。
  • 零配置:無需復雜的配置和管理,只需一個數(shù)據(jù)庫文件即可開始使用。
  • 占用資源少:SQLite數(shù)據(jù)庫文件通常很小,內(nèi)存占用也較少,適用于嵌入式設備或低性能環(huán)境。
  • 支持事務:具備ACID特性,支持事務操作,保證數(shù)據(jù)的完整性和并發(fā)控制。
  • 跨平臺:SQLite可以在多個操作系統(tǒng)上運行,包括Windows、macOS、Linux等。

SQLite的缺點包括

  • 并發(fā)性限制:由于它是單用戶模式,不支持多個寫操作同時進行,因此在高并發(fā)讀寫場景下性能可能受限。
  • 存儲容量有限:由于文件格式的限制,SQLite數(shù)據(jù)庫文件的大小通常有上限。
  • 功能相對較少:相比于傳統(tǒng)的大型數(shù)據(jù)庫管理系統(tǒng),SQLite提供的功能較為有限,不適合處理大規(guī)模復雜數(shù)據(jù)。

SQLite適用于以下應用場景

  • 移動應用:由于SQLite的輕量級特性,它常被用于移動應用開發(fā)中,用來存儲和管理少量結(jié)構(gòu)化數(shù)據(jù)。
  • 嵌入式系統(tǒng):SQLite的小巧和低資源占用使它成為嵌入式設備上的理想選擇,如物聯(lián)網(wǎng)設備、嵌入式系統(tǒng)等。
  • 測試和原型開發(fā):在快速開發(fā)和測試階段,SQLite可以作為臨時的數(shù)據(jù)庫解決方案,提供方便的開發(fā)和測試環(huán)境。
  • 小型網(wǎng)站:對于小型網(wǎng)站或個人項目,SQLite提供了一個簡單可靠的數(shù)據(jù)庫解決方案,不需要復雜的數(shù)據(jù)庫服務器。

總之,SQLite在輕量級應用和資源受限環(huán)境下具有優(yōu)勢,適合那些對性能要求不高、數(shù)據(jù)量較小或者需要方便集成的場景。

如何操作sqlite

使用Node.js操作SQLite數(shù)據(jù)庫有多種方式,其中常用的方式包括使用sqlite3模塊、sequelize模塊和knex模塊。每種方式都有其特點和適用場景。

1. sqlite3:

  • 純粹的SQLite數(shù)據(jù)庫驅(qū)動模塊,提供了底層的數(shù)據(jù)庫訪問接口。
  • 可以直接使用SQL語句進行數(shù)據(jù)庫操作。
  • 適合對數(shù)據(jù)庫操作有更細粒度控制需求的開發(fā)者。

2. sequelize:

  • 是一個功能強大的ORM(Object-Relational Mapping)庫,支持多種數(shù)據(jù)庫包括SQLite。
  • 提供了面向?qū)ο蟮姆绞蕉x模型,便于操作數(shù)據(jù)庫。
  • 自動構(gòu)建SQL查詢語句,簡化數(shù)據(jù)庫操作。
  • 支持事務管理、關(guān)聯(lián)查詢等高級功能。
  • 適合需要使用ORM進行數(shù)據(jù)庫操作或有復雜業(yè)務需求的開發(fā)者。

3. knex:

  • 是一個SQL查詢構(gòu)建器,支持多種數(shù)據(jù)庫包括SQLite。
  • 使用鏈式調(diào)用方法構(gòu)建SQL查詢語句。
  • 支持靈活的查詢條件、聚合查詢、分頁等功能。
  • 可以直接執(zhí)行SQL語句。
  • 適合對數(shù)據(jù)庫操作有更高靈活性要求的開發(fā)者。

哪種方式最好用取決于實際需求。如果需要更底層的數(shù)據(jù)庫訪問接口或?qū)?shù)據(jù)庫操作有更細粒度的控制,可以選擇sqlite3模塊。如果需要使用ORM進行數(shù)據(jù)庫操作或有復雜業(yè)務需求,可以選擇sequelize模塊。如果需要更靈活地構(gòu)建SQL查詢語句或有特定的查詢需求,可以選擇knex模塊。

一般是根據(jù)項目需求選擇適合的方式使用Node.js操作SQLite數(shù)據(jù)庫。

knex詳細介紹

官網(wǎng)介紹:

KneX可以在Node.js和瀏覽器中用作SQL查詢構(gòu)建器,但受WebSQL的限制(如不能刪除表或讀取模式)。 強烈反對在瀏覽器中編寫在服務器上執(zhí)行的SQL查詢,因為這可能會導致嚴重的安全漏洞。 在WebSQL之外構(gòu)建的瀏覽器主要用于學習目的-例如,您可以打開控制臺并使用kneX對象在此頁面上構(gòu)建查詢。

KneX的主要目標環(huán)境是Node.js,您將需要安裝KneX庫,然后安裝相應的數(shù)據(jù)庫庫: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對sqlite的增刪改查

使用knex之前先得安裝knex和數(shù)據(jù)庫驅(qū)動,我這里用的是sqlite數(shù)據(jù)庫,所以需要安裝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

根據(jù)自己的需要選擇合適的數(shù)據(jù)庫驅(qū)動即可

初始化knex實例

const knex = require('knex')({
  client: 'sqlite3',
  connection: {
    filename: './database.sqlite'
  }
});

在實例化knex時,可以傳入一些配置參數(shù)來進行數(shù)據(jù)庫連接和其他相關(guān)配置。常用的配置參數(shù)如下:

client:指定數(shù)據(jù)庫類型,比如sqlite3、mysql、postgresql等。

connection:指定數(shù)據(jù)庫連接信息,可以是一個URL字符串或一個包含連接信息的對象,如host、port、user、password、database等。

pool:連接池的配置,控制數(shù)據(jù)庫連接的復用和管理,常用的配置項有min、max、idleTimeoutMillis等。

migrations:遷移文件相關(guān)的配置,用于數(shù)據(jù)庫遷移管理,包括directory(遷移文件目錄)、tableName(存儲遷移記錄的表名)等。

seeds:種子數(shù)據(jù)相關(guān)的配置,用于初始化數(shù)據(jù)庫,包括directory(種子數(shù)據(jù)文件目錄)等。

debug:是否開啟調(diào)試模式,輸出SQL查詢語句和參數(shù)。

以下是一個示例代碼,演示了實例化knex時的配置參數(shù):

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作為數(shù)據(jù)庫類型,指定了數(shù)據(jù)庫文件路徑。同時配置了連接池的最小連接數(shù)和最大連接數(shù)。定義了遷移文件和種子數(shù)據(jù)文件的目錄,以及遷移記錄表的表名。開啟了調(diào)試模式,輸出SQL查詢語句和參數(shù)。

根據(jù)實際需求,可以根據(jù)以上配置參數(shù)進行靈活的配置。具體的配置項及其含義可以參考knex的官方文檔。

創(chuàng)建數(shù)據(jù)庫表

在使用knex創(chuàng)建表之前,可以通過knex.schema.hasTable()方法檢查表是否已經(jīng)存在。以下是一個使用knex創(chuàng)建表前判斷表是否存在的示例代碼:

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"的表是否存在。如果不存在,則執(zhí)行創(chuàng)建表的操作;如果存在,則直接跳過創(chuàng)建表的步驟。這樣可以確保在創(chuàng)建表之前先判斷表是否已存在。

通過這種方式,可以避免重復創(chuàng)建表或?qū)е洛e誤。需要注意的是,在實際開發(fā)中,根據(jù)業(yè)務需求可能需要對表結(jié)構(gòu)進行更精確的判斷,比如檢查是否存在特定的列等,可以根據(jù)具體情況進行擴展。

增刪改查

當使用knex操作SQLite數(shù)據(jù)庫時,可以按照以下方式進行增刪改查操作:

  • 插入數(shù)據(jù):
knex('users').insert({
  name: 'John Doe',
  email: 'john.doe@example.com'
}).then(() => {
  console.log('Data inserted successfully');
}).catch((err) => {
  console.error(err);
});
  • 查詢數(shù)據(jù):
knex.select().from('users').then((rows) => {
  rows.forEach((row) => {
    console.log(row.name, row.email);
  });
}).catch((err) => {
  console.error(err);
});
  • 更新數(shù)據(jù):
knex('users')
  .where('id', 1)
  .update({ name: '前端少年汪' })
  .then(() => {
    console.log('Data updated successfully');
  }).catch((err) => {
    console.error(err);
  });
  • 刪除數(shù)據(jù):
knex('users')
  .where('id', 1)
  .del()
  .then(() => {
    console.log('Data deleted successfully');
  }).catch((err) => {
    console.error(err);
  });

以上代碼演示了使用knex操作SQLite數(shù)據(jù)庫的基本增刪改查操作。根據(jù)實際需求,可以使用knex提供的更多方法和功能來完成更復雜的數(shù)據(jù)庫操作。

以上就是使用node操作SQLite的方法的詳細內(nèi)容,更多關(guān)于node操作SQLite的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • angularJS 如何讀寫緩沖的方法(推薦)

    angularJS 如何讀寫緩沖的方法(推薦)

    angularJS 如何讀寫緩沖?下面小編就為大家?guī)硪黄猘ngularJS 讀寫緩沖的方法(推薦)。希望對大家有所幫助。一起跟隨小編過來看看吧
    2016-08-08
  • node.js中的events.EventEmitter.listenerCount方法使用說明

    node.js中的events.EventEmitter.listenerCount方法使用說明

    這篇文章主要介紹了node.js中的events.EventEmitter.listenerCount方法使用說明,本文介紹了events.EventEmitter.listenerCount的方法說明、語法、使用實例和實現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • nodejs微信公眾號支付開發(fā)

    nodejs微信公眾號支付開發(fā)

    這篇文章主要為大家詳細介紹了nodejs微信公眾號支付開發(fā),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • node里的filesystem模塊文件讀寫操作詳解

    node里的filesystem模塊文件讀寫操作詳解

    這篇文章主要為大家介紹了node里的filesystem模塊文件讀寫操作詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • node.js開機自啟動腳本文件

    node.js開機自啟動腳本文件

    這篇文章主要介紹了node.js開機自啟動腳本文件的方法和代碼,這里分享給大家,有需要的小伙伴參考下吧
    2014-12-12
  • 輕松創(chuàng)建nodejs服務器(7):阻塞操作的實現(xiàn)

    輕松創(chuàng)建nodejs服務器(7):阻塞操作的實現(xiàn)

    這篇文章主要介紹了輕松創(chuàng)建nodejs服務器(7):阻塞操作的實現(xiàn),本文先是組出了代碼,然后對代碼一一分析,需要的朋友可以參考下
    2014-12-12
  • node 使用multer中間件上傳報錯Unexpected end of form的問題及解決方法

    node 使用multer中間件上傳報錯Unexpected end of fo

    再前幾天還是可以正常上傳,但今天運行出現(xiàn)該報錯,下面通過場景分析給大家介紹node使用multer中間件上傳,報錯Unexpected end of form的解決方案,感興趣的朋友一起看看吧
    2025-03-03
  • Node.js進行串口通信的實現(xiàn)示例

    Node.js進行串口通信的實現(xiàn)示例

    本文主要介紹了Node.js進行串口通信的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-02-02
  • Node.js Addons翻譯(C/C++擴展)

    Node.js Addons翻譯(C/C++擴展)

    這篇文章主要介紹了Node.js Addons翻譯(C/C++擴展) 的相關(guān)資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • nodejs body-parser 解析post數(shù)據(jù)實例

    nodejs body-parser 解析post數(shù)據(jù)實例

    下面小編就為大家?guī)硪黄猲odejs body-parser 解析post數(shù)據(jù)實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07

最新評論