Express+SQLite学习(实用)

这篇具有很好参考价值的文章主要介绍了Express+SQLite学习(实用)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、VSCode创建Express程序步骤

要在VSCode中创建一个Express程序,你可以按照以下步骤进行操作:

1、安装Node.jsnpm: 首先,确保你的计算机上已经安装了Node.js和npm。
2、创建项目文件夹: 在你选择的位置上创建一个新文件夹来保存你的Express项目。
3、在VSCode中打开文件夹: 打开VSCode,并通过点击 “文件”(File)菜单中的 “打开文件夹”(Open Folder)选项,选择你在第二步中创建的项目文件夹并打开它。
4、在终端中初始化项目: 在VSCode中,点击 “查看”(View)菜单,选择 “终端”(Terminal)选项。这将打开一个终端窗口。在终端中,导航到你的项目文件夹,并运行以下命令来初始化你的项目:

npm init

这将引导你创建一个新的npm项目,并在项目文件夹中生成一个 package.json 文件。
5、安装Express: 在终端中,运行以下命令来安装Express:

npm install express

这将使用npm下载并安装Express模块。

6、创建Express应用程序文件: 在VSCode中,导航到你的项目文件夹,在项目文件夹中创建一个新的JavaScript文件,例如 app.js,作为你的Express应用程序的入口点。
7、编写Express应用程序: 在 app.js 文件中,使用以下代码编写一个简单的Express应用程序示例:

const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.send('Hello, Express!');
});

app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

这个示例创建了一个简单的Express应用程序,当你在浏览器中访问根路径时,它将返回 "Hello, Express!"

8、启动Express应用程序: 在终端中,使用以下命令启动Express应用程序:

node app.js

这将启动Express应用程序,并在终端中显示 "Server is running on port 3000"

9、测试Express应用程序: 打开你的Web浏览器,并在地址栏中输入 http://localhost:3000,然后按下Enter键。你应该能够看到 "Hello, Express!" 在浏览器中显示。

这些是在VSCode中创建一个简单的Express程序的基本步骤。你可以根据自己的需要扩展和修改这个示例。记得在修改代码之前停止正在运行的Express应用程序(在终端中按Ctrl+C)。

2、SQLite学习

SQLite是一种轻量级的嵌入式关系数据库管理系统,支持使用SQL(结构化查询语言)进行数据库操作。下面是一些常用的SQLite命令:

1、创建数据库:

sqlite3 database_name.db

2、创建表:

CREATE TABLE table_name (
  column1 datatype constraint,
  column2 datatype constraint,
  ...
);

3、插入数据:

INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);

4、查询数据(重点):

SELECT column1, column2, ... FROM table_name;

5、更新数据:

UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;

6、删除数据:

DELETE FROM table_name WHERE condition;

7、删除表:

DROP TABLE table_name;

8、查询表结构:

PRAGMA table_info(table_name);

9、导入数据:

.mode csv
.import file_name table_name

这只是一些常用的SQLite命令示例。SQLite支持更多的SQL命令和功能,可以根据具体需求使用适当的命令来操作数据库。你可以查阅SQLite的官方文档以获取更详细的信息和更多命令示例。

3、Express中读取SQLite数据

要在Express中读取SQLite数据,你需要结合使用SQLite3模块和Express框架。以下是使用Express和SQLite3模块读取SQLite数据库数据的一般步骤:

1、确保已在你的项目中安装Express和SQLite3模块。你可以使用npm进行安装:

npm install express sqlite3

2、在你的应用程序中,引入所需的模块:

const express = require('express');
const sqlite3 = require('sqlite3').verbose();

3、创建Express应用程序并设置中间件:

const app = express();
app.use(express.json()); // 解析JSON请求体

4、创建SQLite数据库连接和路由处理程序。你可以在路由处理程序中执行SQLite查询并返回结果:

app.get('/data', (req, res) => {
  const db = new sqlite3.Database('path/to/your/database.db'); //我喜欢用相对路径
  const sql = 'SELECT * FROM your_table';  //这是查询你的表里面的全部属性,到时候可以自行修改

  db.all(sql, [], (err, rows) => {
    if (err) {
      console.error(err);
      res.status(500).json({ error: 'An error occurred' });
      return;
    }

    // 处理查询结果
    res.json(rows);
  });

  db.close();
});

在上述示例中,当收到GET请求**/data**时,会创建一个SQLite数据库连接,执行SELECT查询,并将结果作为JSON响应返回。
也就是你要在浏览器中输入http://localhost:3000/data

5、启动Express应用程序监听指定的端口:

app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

在上述示例中,应用程序将在端口3000上监听请求。
记得根据实际情况修改数据库文件的路径、查询语句以及路由处理程序的逻辑。这只是一个简单的示例,你可以根据自己的需求进行扩展和优化。

4、需求:读取数据库中的一列属性,将每一行数据单独封装到一个文件中,格式为svg格式

思路:主要是使用SQLite的Node.js驱动程序时的each方法

4.1 each方法

在sqlite3模块中,each方法用于逐行处理查询结果,它接收两个参数:查询语句和一个回调函数。查询语句用于执行数据库查询,而回调函数则在每一行的结果上被调用。
示例用法如下:

const sqlite3 = require('sqlite3').verbose();
const db = new sqlite3.Database('database_name.db');  //你的数据库文件名

const query = 'SELECT * FROM table_name';  //读取你要读的那个表的全部属性

db.each(query, (err, row) => {
  if (err) {
    console.error(err);
  } else {
    console.log(row); // 处理每一行的结果
  }
}, (err, rowCount) => {
  if (err) {
    console.error(err);
  } else {
    console.log(`共处理了 ${rowCount} 行数据`); // 在所有行处理完成后调用
  }
});

db.close();

在上述示例中,db.each()方法执行查询,并在每一行结果上调用回调函数。回调函数的第一个参数是可能的错误对象,第二个参数是当前行的结果。你可以在回调函数中处理每一行的数据。另外,可以提供第三个回调函数,在所有行处理完成后调用,它的第一个参数也是可能的错误对象,第二个参数是处理的行数。

使用each方法可以逐行处理查询结果,这对于处理大量数据或需要逐行操作的场景非常有用。

请注意,这里的each方法是特定于sqlite3模块的功能,在其他SQLite驱动程序或其他环境中可能具有不同的实现或命名。如果你使用的是不同的SQLite库或不同的语言/框架,请参考相应的文档来了解它们提供的相似功能。

4.2 将遍历的每一条数据存入文件中

要将遍历的每一条数据存入文件中,你可以在db.each()的回调函数中将每行的数据写入文件。以下是一个示例:

const sqlite3 = require('sqlite3').verbose();
const fs = require('fs');

const db = new sqlite3.Database('database_name.db');

const query = 'SELECT * FROM table_name';

db.each(query, (err, row) => {
  if (err) {
    console.error(err);
  } else {
    // 处理每一行的数据
    const data = JSON.stringify(row);
    // 将所有数据都依次存入单个的output.txt文件,可以改名字
    fs.appendFile('output.txt', data + '\n', (err) => {    
      if (err) {
        console.error(err);
      }
    });
  }
}, (err, rowCount) => {
  if (err) {
    console.error(err);
  } else {
    console.log(`共处理了 ${rowCount} 行数据`);
  }
  
  // 关闭数据库连接
  db.close();
});

在上述示例中,我们使用fs.appendFile()方法将每行数据追加到名为output.txt的文件中。首先,将每行数据转换为JSON字符串,然后使用\n添加换行符,以便每行数据占据文件中的一行。

如果需要在文件写入之前清空文件内容,可以使用fs.writeFile()替代fs.appendFile()

请注意,每次执行查询时都会追加到文件中,是单一文件

4.3 将遍历的每一项存入单独的文件中

如果你想将遍历的每一项存入单独的文件中,你可以在db.each()的回调函数中为每一项创建一个独立的文件,并将相应的数据写入该文件。以下是一个示例:

const sqlite3 = require('sqlite3').verbose();
const fs = require('fs');

const db = new sqlite3.Database('database_name.db');

const query = 'SELECT * FROM table_name';

db.each(query, (err, row) => {
  if (err) {
    console.error(err);
  } else {
    // 创建文件名,例如使用行的ID作为文件名
    const fileName = `file_${row.id}.txt`;
    // 将数据转换为字符串
    const data = JSON.stringify(row);

    // 将数据写入文件
    fs.writeFile(fileName, data, (err) => {
      if (err) {
        console.error(err);
      } else {
        console.log(`数据已保存至文件: ${fileName}`);
      }
    });
  }
}, (err, rowCount) => {
  if (err) {
    console.error(err);
  } else {
    console.log(`共处理了 ${rowCount} 行数据`);
  }

  // 关闭数据库连接
  db.close();
});

在上述示例中,我们为每一项创建一个独立的文件,并以行的ID作为文件名(你可以根据具体需求自定义文件名)。然后,将行数据转换为字符串,并使用fs.writeFile()方法将数据写入文件。每次迭代时,都会创建一个新的文件并将相应的数据写入其中。

请注意,上述示例中使用JSON字符串化数据进行演示,你可以根据需要选择适当的数据格式。

4.4 筛选具体数据库数据

因为只需要数据库中的某一列数据,所以需要筛选

在进行SELECT查询语句时,如果你想同时选择多个列,需要使用逗号将它们分隔开。在你的示例中,如果你想选择PNG表中的svgname两列,需要在它们之间加上逗号。以下是查询语句:

SELECT svg, name FROM PNG

通过在列名之间添加逗号,你可以同时选择多个列,并从查询结果中获取这些列的值。请确保在编写查询语句时正确使用逗号来分隔列名。

4.5 存储位置变成一个文件夹

因为上面存储的位置在根目录下,所以只能新建一个文件夹进行存储每一条数据

1、创建文件夹:
在你的应用程序中,使用文件系统模块(如fs模块)创建一个文件夹来存储查询结果。例如:

const fs = require('fs');

const folderPath = 'result_folder';

// 创建文件夹(如果不存在)
if (!fs.existsSync(folderPath)) {
  fs.mkdirSync(folderPath);
}

2、遍历查询结果并存储到文件夹:

使用查询语句执行查询操作,并在查询的每一行中将数据存储到文件夹中的文件中。以下是一个示例:

const sqlite3 = require('sqlite3').verbose();
const fs = require('fs');

const db = new sqlite3.Database('database_name.db');
const folderPath = 'result_folder';

const query = 'SELECT svg, name FROM PNG';

db.each(query, (err, row) => {
  if (err) {
    console.error(err);
  } else {
    const fileName = `file_${row.name}.txt`; // 使用name作为文件名(你可以根据需求进行自定义)
    const filePath = `${folderPath}/${fileName}`;
    const data = JSON.stringify(row);

    fs.writeFile(filePath, data, (err) => {
      if (err) {
        console.error(err);
      } else {
        console.log(`数据已保存至文件: ${filePath}`);
      }
    });
  }
}, (err, rowCount) => {
  if (err) {
    console.error(err);
  } else {
    console.log(`共处理了 ${rowCount} 行数据`);
  }

  db.close();
});

在上述示例中,我们首先创建了一个名为result_folder的文件夹(如果它不存在)。然后,我们使用查询语句执行查询操作,并在每一行的结果中将数据存储为一个单独的文件。每个文件名由name列的值构成,并将文件保存在result_folder文件夹中。

4.6 遍历的数据取消引号

因为想要每个都是svg图片格式,但是遍历出的数据存在引号,所以要消去,可以使用模板字符串来解决

const data = `${svg.slice(1, -1)}`;

在上述示例中,我们使用 svg.slice(1, -1) 去除了最外层的大括号 {},以获取纯粹的 svgred 数据。然后将数据写入文件。

还有一种解决办法,也比较方便

app.get('/data', (req, res) => {
    const db = new sqlite3.Database('./data/testdb.sqlite');
    const sql = 'SELECT svg,name,libid,code,type FROM PNG';

    db.each(sql, (err, row) => {
        if (err) {
            console.error(err);
        } else {
            // 创建文件名,例如使用行的ID作为文件名
            const fileName = `${row.libid}-${row.code}-${row.name}.svg`;
            const filePath = `${folderPath}/${fileName}`;
            // 将数据转换为字符串
            const svg = row.svg !== null ? row.svgred.toString() : '';
            fs.appendFile(filePath, svg + '\n', (err) => {
                if (err) {
                    console.error(err);
                } else {
                    console.log(`数据已保存至文件: ${filePath}`);
                }
            });
        }
    }, (err, rowCount) => {
        if (err) {
            console.error(err);
        } else {
            console.log(`共处理了 ${rowCount} 行数据`); // 在所有行处理完成后调用
        }
    });

    db.close();
});

这样的话生成的本身就是svg标签,不需要转了文章来源地址https://www.toymoban.com/news/detail-463256.html

这个需求也让我具体的了解了Express和SQLite,希望对大家有帮助

到了这里,关于Express+SQLite学习(实用)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Python数据库模块sqlite3操作实例(非常实用)

    当使用Python进行SQLite数据库操作时, sqlite3 模块是一个非常常用和强大的工具。它提供了一系列函数和方法,用于创建、连接、查询和管理数据库。下面是一些常见的用法示例:   sqlite-utils 、 sqlitebiter 和其他类似的库可以提供更高级的功能,包括预编译语句的执行优化和数

    2024年02月13日
    浏览(15)
  • 【Git记录学习】github创建项目以及本地使用(vscode)

    【Git记录学习】github创建项目以及本地使用(vscode)

    从github中创建空仓库 在执行完上一步操作后会返回这样的界面,包括了一些基本的git操作以及HttpS/SSH地址 生成一个readme.md文档(步骤2 Set up下面有蓝色的超链接,点击即可创建) 4.因为我创建的时候选择了私有仓库,所以要多设置一点东西好像。按步骤创建吧。 然后再次点

    2024年02月04日
    浏览(15)
  • express项目的创建

    express项目的创建

    前端开发者若要进行后端开发,大多都会选择node.js,在node生态下是有大量框架的,其中最受新手喜爱的便是老牌的express.js,接下来我们就从零创建一个express项目。 在这里:https://nodejs.org/dist/v16.14.0/node-v16.14.0-x64.msi ,下载后直接安装。 安装完成后,验证是否安装成功,wi

    2023年04月14日
    浏览(7)
  • 87 # express 应用和创建应用的分离

    87 # express 应用和创建应用的分离

    创建应用的过程和应用本身要进行分离。 路由和创建应用的过程也做一个分离。 下面实现创建应用的过程和应用本身要进行分离: express.js 每次创建一个应用,路由系统应该是毫无关系的,应该创建一个全新的路由系统 新建 application.js 测试一下:

    2024年02月07日
    浏览(6)
  • VScode第三方插件打开sqlite数据库

    VScode第三方插件打开sqlite数据库

    最近在做的东西涉及SQLite数据库(一种常用在移动端的数据库类型,和mysql这些主流数据库也差不多),为了方便调试开发,数据库预览很重要;同时,mac预览数据库的软件多数是要收费的,且我体验时间用了两款也不是特别满意。 针对只是要预览数据库不做太多操作,需要

    2024年02月03日
    浏览(14)
  • Sqlite创建表、查看表

    Sqlite创建表、查看表

    前面已经学习了Sqlite; 图解SQLite教程_bcbobo21cn的博客-CSDN博客 下面复习一下; 启动和创建数据库;.tables查看表,此时没有;   创建一个表并插入数据;   再创建一个表并插入数据;带小数点的数据可以直接使用real类型;   查看表,查看表结构;    

    2024年02月12日
    浏览(5)
  • VSCode配置之C++ & SQLite3极简配置方案

    VSCode配置之C++ & SQLite3极简配置方案

    背景 最近在学习《深入应用C++11: 代码优化与工程级应用》,其中第13章说到SQLite库,查询网上诸多教程,发现比较容易出现bug且配置较为麻烦,故记录此次简化版方案,以供参考。 软件环境 SQLite 3.42.0 版本(仅下载Source code即可) VSCode+CMake+ SQLite Viewer VSCode + SQLite文件目录

    2024年02月14日
    浏览(13)
  • Android studio 连接SQLite数据库 +创建数据库+创建数据库表

    Android studio 连接SQLite数据库 +创建数据库+创建数据库表

    Android studio 之数据库的使用 连接创建SQLite 大家好,欢迎来到寒依。 相信看啦我的教程 当老师问你在学习Android studio 数据库使用过程中遇到什么困难,分享一下你的感悟和解决方法 的时候,你可以直接大胆的说出来: “老师我没有遇到问题,看啦寒依的教程 畅行无阻” 我

    2024年02月02日
    浏览(20)
  • python web 开发与 Node.js + Express 创建web服务器入门

    目录 1. Node.js + Express 框架简介 2  Node.js + Express 和 Python 创建web服务器的对比 3 使用 Node.js + Express 创建web服务器示例 3.1 Node.js + Express 下载安装 3.2 使用Node.js + Express 创建 web服务器流程         Node.js + Express 是一种常用于构建 Web 应用程序的开发堆栈,其中 Node.js 是运行

    2024年02月10日
    浏览(19)
  • vscode实用配置、常用插件

    vscode实用配置、常用插件

    一、配置自动保存 文件--首选项--设置--输入“自动保存” 在Files:Auto Save中  选择afterDelay 在Files: Auto Save Delay中配置延迟保存的时间 二:插件vetur 常用功能: 1、使.vue代码高亮 安装激活vetur插件, 代码就有高亮,显示彩色 不仅仅vue文件,vetur还支持很多语言的代码高亮,如下

    2024年02月09日
    浏览(15)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包