在Nodejs中使用MySQL数据库

ops/2024/10/25 15:15:57/

简介

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,属于Oracle旗下产品。MySQL是最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的RDBMS(Relational Database Management System,关系型数据库管理系统)应用软件之一。

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

MySQL所使用的SQL语言是用于访问数据的最常用标准化语言。MySQL软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开源代码这一特点,一般中小型和大型网站的开发都选择MySQL作为网站数据库

使用

第一步:安装mysql2

yarn add mysql2

第二步:写连接数据库的配置文件

db.config.js

// 引入mysql
const mysql = require('mysql2');// 创建连接
const connection = mysql.createConnection({host: 'localhost', // 数据库地址user: 'root', // 用户名password: '123456', // 密码
})// 连接数据库
connection.connect(err => {if (err) {console.error('连接数据库发生错误: ' + err.stack);return;}// 检查并创建数据库const dbName = 'ffmpeg'// 查询ffmepg数据库是否存在,如果不存在则创建connection.query(`CREATE DATABASE IF NOT EXISTS ${dbName}`, (err, result) => {if (err) {console.error('创建数据库失败: ' + err.message);return;}console.log(`数据库${dbName}已存在或已创建`);// 选择数据库connection.changeUser({ database: dbName }, (err) => {if (err) {console.error('选择数据库失败: ' + err.stack);return}})});
})module.exports = connection

第三步:在nodejs的app.js文件中引入并使用db.config.js文件

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');var indexRouter = require('./routes/index');var app = express();
// 连接数据库
require('./config/db.config')
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));// 使用cors解决跨域问题
app.use(require('cors')());app.use('/', indexRouter);// catch 404 and forward to error handler
app.use(function (req, res, next) {next(createError(404));
});// error handler
app.use(function (err, req, res, next) {// set locals, only providing error in developmentres.locals.message = err.message;res.locals.error = req.app.get('env') === 'development' ? err : {};// render the error pageres.status(err.status || 500);res.render('error');
});module.exports = app;

通过以上步骤就可以连接对应的数据库

如果想要在连接数据的时候顺便创建表,可以按照下方步骤进行

第一步:为了方便管理,我将创建表的逻辑代码单独写成一个js文件 --- GroupModel.js

说明:

创建表格的时候要判断该表是否已经存在,因为重复创建同一个表的时候会报错,所以下方代码使用 CREATE TABLE IF NOT EXISTS 来规避这个问题。

// 引入mysql
const mysql = require('mysql2');// 创建视频分组表
function createGroupTable(connection) {/*AUTO_INCREMENT 定义列为自增主键。*/const sql = `CREATE TABLE IF NOT EXISTS block (id INT AUTO_INCREMENT PRIMARY KEY COMMENT '自增主键',group_name VARCHAR(255) NOT NULL COMMENT '文件名',num INT NOT NULL DEFAULT 0  COMMENT '关联视频数量,默认值为0',create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '上传时间')`;// 执行SQL语句connection.query(sql, (err, result) => {if (err) {console.error('分组表创建失败:', err.message);return;}console.log('分组表已存在或创建');});
}module.exports = createGroupTable

第二步:将GroupModel.js文件在db.config.js文件中引入并使用

// 引入mysql
const mysql = require('mysql2');
const createGroupTable = require('../model/GroupModel');// 创建连接
const connection = mysql.createConnection({host: 'localhost', // 数据库地址user: 'root', // 用户名password: '123456', // 密码
})// 连接数据库
connection.connect(err => {if (err) {console.error('连接数据库发生错误: ' + err.stack);return;}// 检查并创建数据库const dbName = 'ffmpeg'// 查询ffmepg数据库是否存在,如果不存在则创建connection.query(`CREATE DATABASE IF NOT EXISTS ${dbName}`, (err, result) => {if (err) {console.error('创建数据库失败: ' + err.message);return;}console.log(`数据库${dbName}已存在或已创建`);// 选择数据库connection.changeUser({ database: dbName }, (err) => {if (err) {console.error('选择数据库失败: ' + err.stack);return}createGroupTable(connection)})});
})module.exports = connection


http://www.ppmy.cn/ops/128369.html

相关文章

Rust编程语言变量的所有权(ownership)

文章目录 什么是所有权所有权规则转让所有权变量与数据交互的方式(一):移动变量与数据交互的方式(二):克隆只在栈上的数据:拷贝所有权与函数返回值与作用域引用和借用可变引用悬垂引用(Dangling References)引用的规则什么是所有权 所有权(ownership)是Rust 的核心功能之一…

执行Django项目的数据库迁移命令时报错:(1050, “Table ‘django_session‘ already exists“);如何破?

一、问题描述: 当我们写Django时,由于自己的操作不当,导致执行数据库迁移命令时报错,报错的种类有很多,例如: 迁移文件冲突:可能你有多个迁移文件试图创建同一个表。数据库状态与迁移文件不同…

OJ练习:判断环形链表、返回入环的第一个节点

目录 1. 判断环形链表1.1 判断环形链表拓展 2. 返回入环首节点解法一解法二 1. 判断环形链表 题目来自 141.环形链表 - 力扣(LeetCode) 解题思路:使用快慢指针。 定义一个慢指针slow指向头节点,每次向前走一步定义一个快指针fast指…

使用 NumPy 和 Matplotlib 实现交互式数据可视化

使用 NumPy 和 Matplotlib 实现交互式数据可视化 在数据分析中,交互式可视化可以更好地帮助我们探索和理解数据。虽然 Matplotlib 是静态绘图库,但结合一些技巧和 Matplotlib 的交互功能(widgets、event handlers),我…

2000-2020年各地级市人类需求指数数据

2000-2020年各地级市人类需求指数数据 1、年份:2000、2010、2020年 2、指标:城市名称、HMDI2000、HMDI2010、HMDI2020 3、范围:341个地级市 4、说明:各城市的人类需求指数项目旨在全面评估Z国城市居民在不同社会发展阶段对自然…

前端性能优化之Canvas优化

元素是众多广泛使用的网络 2D 图像渲染标准之一。它被广泛用于游戏及复杂的图像可视化中。然而,随着网站和应用将 canvas 画布推至极限,性能开始成为问题。 Canvas 上下文切换 Canvas 绘制 API 都是在上下文context上进行调用,context不是一个普通的对象,当我们对其赋值的…

苍穹外卖05

redis 1. 启动redis .\redis-server.exe redis.windows.conf 2. 连接redis到客户端(这里我们使用ARDM图形化工具) 新建连接 一旦建立好后就永久直接可用(和mysql一个道理) 连接成功界面

「iOS」——AFNetworking的简单使用

iOS学习 前言原生网络请求使用AFNetworking库进行网络请求具体使用 单例创建的原因单例使用 总结 前言 我们之前学习了通过OC原生内容进行网络申请,AFNetworkikng第三方库的使用,可以极大地简化网络申请的代码量。 原生网络请求 网络请求主要分为上面五…