当前位置: 首页 > news >正文

1-1.mysql2 之 mysql2 初识(mysql2 初识案例、初识案例挖掘)

一、mysql2 概述

  1. mysql2 是一个用于 Node.js 的 MySQL 客户端库

  2. mysql2 是 mysql 库的一个改进版本,提供了更好的性能和更多的功能

  3. 使用 mysql2 之前,需要先安装它 npm install mysql2


二、mysql2 初识案例

1、数据库准备
  1. 创建数据库 testdb
CREATE DATABASE testdb;
  1. 创建数据表 employees
CREATE TABLE IF NOT EXISTS employees (id INT AUTO_INCREMENT PRIMARY KEY,firstName VARCHAR(50) NOT NULL,lastName VARCHAR(50) NOT NULL,email VARCHAR(100) NOT NULL UNIQUE,phone VARCHAR(20),hireDate DATE,jobTitle VARCHAR(50)
);
  1. 添加一些测试数据
INSERT INTO employees (firstName, lastName, email, phone, hireDate, jobTitle) VALUES
('John', 'Doe', 'john.doe@example.com', '123-456-7890', '2023-01-15', 'Software Engineer'),
('Jane', 'Smith', 'jane.smith@example.com', '098-765-4321', '2022-07-22', 'Product Manager'),
('Alice', 'Johnson', 'alice.johnson@example.com', '555-123-4567', '2021-11-30', 'Designer'),
('Bob', 'Brown', 'bob.brown@example.com', '555-987-6543', '2020-03-15', 'Data Analyst');
2、测试
const mysql = require("mysql2/promise");const pool = mysql.createPool({host: "localhost",database: "testdb",user: "root",password: "1234",waitForConnections: true,connectionLimit: 10,queueLimit: 0,
});const queryAllTest = async () => {const connection = await pool.getConnection();const result = await connection.execute("SELECT * FROM employees");connection.release();console.log(result.rows);
};queryAllTest();
  • 输出结果
[{id: 1,firstName: 'John',lastName: 'Doe',email: 'john.doe@example.com',     phone: '123-456-7890',hireDate: 2023-01-14T16:00:00.000Z,jobTitle: 'Software Engineer'},{id: 2,firstName: 'Jane',lastName: 'Smith',email: 'jane.smith@example.com',phone: '098-765-4321',hireDate: 2022-07-21T16:00:00.000Z,jobTitle: 'Product Manager'},{id: 3,firstName: 'Alice',lastName: 'Johnson',email: 'alice.johnson@example.com',phone: '555-123-4567',hireDate: 2021-11-29T16:00:00.000Z,jobTitle: 'Designer'},{id: 4,firstName: 'Bob',lastName: 'Brown',email: 'bob.brown@example.com',phone: '555-987-6543',hireDate: 2020-03-14T16:00:00.000Z,jobTitle: 'Data Analyst'}
]

三、初识案例挖掘

1、案例解析
  1. 引入 mysql2
const mysql = require("mysql2/promise");
  1. 创建数据库连接池
const pool = mysql.createPool({host: "localhost",database: "testdb",user: "root",password: "1234",waitForConnections: true,connectionLimit: 10,queueLimit: 0,
});
参数类型说明
hoststring数据库服务器的地址
databasestring要连接的数据库名称
userstring数据库用户名
passwordstring数据库密码
waitForConnectionsboolean当没有可用连接时,是否等待连接释放(默认为 true)
connectionLimitnumber连接池中允许的最大连接数
queueLimitnumber当连接池中没有可用连接且达到最大等待队列长度时,新请求的行为(0 表示无限制)
  1. 从连接池中获取一个连接
const connection = await pool.getConnection();
  1. 执行一条 SQL 语句并获取结果
const result = await connection.execute("SELECT * FROM employees");
  1. 释放一个连接
connection.release();
2、要点复习
  1. 复习一下数组的解构赋值
const nums = [1,2,3,4,5];
const [num1, num2] = nums;
console.log(num1, num2);
  • 输出结果
1 2
  1. 对 execute 方法返回的数组的解构赋值,就是获取该数组的第一个元素,完整的数组是这样的
const queryAllResultTest = async () => {const connection = await pool.getConnection();const result = await connection.execute("SELECT * FROM employees");connection.release();console.log(result);
};queryAllResultTest();
  • 输出结果
[[{id: 1,firstName: 'John',lastName: 'Doe',email: 'john.doe@example.com',phone: '123-456-7890',hireDate: 2023-01-14T16:00:00.000Z,jobTitle: 'Software Engineer'},{id: 2,firstName: 'Jane',lastName: 'Smith',email: 'jane.smith@example.com',phone: '098-765-4321',hireDate: 2022-07-21T16:00:00.000Z,jobTitle: 'Product Manager'},{id: 3,firstName: 'Alice',lastName: 'Johnson',email: 'alice.johnson@example.com',phone: '555-123-4567',hireDate: 2021-11-29T16:00:00.000Z,jobTitle: 'Designer'},{id: 4,firstName: 'Bob',lastName: 'Brown',email: 'bob.brown@example.com',phone: '555-987-6543',hireDate: 2020-03-14T16:00:00.000Z,jobTitle: 'Data Analyst'}],[`id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT,`firstName` VARCHAR(50) NOT NULL,`lastName` VARCHAR(50) NOT NULL,`email` VARCHAR(100) NOT NULL UNIQUE_KEY,`phone` VARCHAR(20),`hireDate` DATE(10),`jobTitle` VARCHAR(50)]
]
3、案例优化
  • 添加 try catch finally 能保证在 execute 方法执行 SQL 语句发送异常时连接也能释放
const queryAllErrorTest = async () => {const connection = await pool.getConnection();try {const [rows] = await connection.execute("SELECT * FROM error_employees");console.log(rows);} catch (error) {console.error(error);} finally {connection.release();}
};queryAllErrorTest();
  • 输出结果
Error: Table 'testdb.error_employees' doesn't exist

相关文章:

1-1.mysql2 之 mysql2 初识(mysql2 初识案例、初识案例挖掘)

一、mysql2 概述 mysql2 是一个用于 Node.js 的 MySQL 客户端库 mysql2 是 mysql 库的一个改进版本,提供了更好的性能和更多的功能 使用 mysql2 之前,需要先安装它 npm install mysql2 二、mysql2 初识案例 1、数据库准备 创建数据库 testdb CREAT…...

企业邮箱为什么不能经常群发邮件?

企业邮箱是用企业域名作为后缀的邮箱,虽然企业邮箱确实具备群发邮件的功能,但它更适用于企业内部的群发,而非用于外部推广。如果是在企业邮件域内进行群发,通常可以借助企业邮箱的邮件列表来实现。然而,对于域外的大量…...

集成运算放大电路反馈判断

集成运算放大电路 一种具有很高放大倍数的多级直接耦合放大电路,因最初用于信号运算而得名,简称集成运放或运放 模拟集成电路中的典型组件,是发展最快、品种最多、应用最广的一种 反馈 将放大电路输出信号的一部分或全部通过某种电路引回到输…...

媒体查询、浏览器一帧渲染过程

文章目录 媒体查询语法示例根据视口宽度应用不同的样式根据设备像素比应用不同的样式根据方向应用不同的样式 使用场景 浏览器一帧的渲染过程 媒体查询 媒体查询(Media Query)是CSS3中的一个重要特性,它允许开发者根据设备的特定条件&#x…...

高级排序算法(一):快速排序详解

引言 当我们处理大规模数据时,像冒泡排序、选择排序这样的基础排序算法就有点力不从心了。这时候,快速排序(Quick Sort)就派上用场了。 作为一种基于分治法的高效排序算法,快速排序在大多数情况下可以在O(n log n)的时…...

3.2 网络协议IP

欢迎大家订阅【计算机网络】学习专栏,开启你的计算机网络学习之旅! 文章目录 1 定义2 虚拟互连网络3 分组在互联网中的传送4 IPv4 地址 1 定义 网际协议 IP是 TCP/IP 体系中两个最主要的协议之一,也是最重要的互连网协议之一。IPv4 和 IPv6 …...

2024 一带一路暨金砖国家技能发展与技术创新大赛【网络安全防护治理实战技能赛项】样题(中职组)

2024 一带一路暨金砖国家技能发展与技术创新大赛【网络安全防护治理实战技能赛项】样题(中职组) 1.基础设置和安全强化(xxx 分)1.3. 任务内容: 2.安全监测和预警(xxx 分)2.1. 任务一:建立目录安…...

excel如何让单元格选中时显示提示信息?

现象: 当鼠标放在单元格上,会出现提示信息: 先选中单元格选择上方的【数据】-【数据验证】图标选择【输入信息】勾上【选定单元格时显示输入信息】输入【标题】,如:最上方图中的:姓名:输入【输…...

oscp备考,oscp系列——Kioptix Level 3靶场

Kioptix Level 3 oscp备考,oscp系列——Kioptix Level 3靶场 nmap扫描 主机发现 └─# nmap -sn 192.168.80.0/24 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-09 00:33 CST Nmap scan report for 192.168.80.1 Host is up (0.00014s latency). MAC…...

信创改造-达梦数据库配置项 dm.ini 优化

设置模式:兼容MySQL,COMPATIBLE_MODE 4 内存占比:90%,MAX_OS_MEMORY 90 目标内存:2G(不影响申请内存超过2G,但这部分内存不会回收),MEMORY_TARGET 2000 参考 https:…...

日本IT-需要掌握哪些技术框架?一篇通读

在日本从事IT工作,需要掌握的技术框架与全球范围内的趋势相似,但也有一些特定的技术和框架在日本更为流行。以下是一些在日本IT行业中常用的技术框架: Java后端 Java语言:Java在日本是一门非常稳定且受欢迎的编程语言&#xff0…...

错题:Linux C语言

题目&#xff1a;手写代码&#xff1a;判断一个数&#xff08;int类型的整数&#xff09;中有有多少1 题目&#xff1a;手写代码&#xff1a;判断一个数(转换成二进制表示时)有几个1 #include <stdio.h> int main(int argc, const char *argv[]) { //判断一个数&#xf…...

多表设计-一对多一对多-外键

一.多表设计概述&#xff1a; 二.一对多&#xff1a; 1.需求&#xff1a; 根据 页面原型 及 需求文档&#xff0c;完成部门及员工模块的表结构设计 -->部门和员工就是一对多&#xff0c;因为一个部门下会有多个员工&#xff0c;但一个员工只归属一个部门 2.页面原型&…...

Ch1:古今的manipulation与仿真、ROS和Drake介绍

不同的机器人研究与仿真 以前&#xff08;15年左右&#xff09;只能用仿真环境训练行走机器人&#xff0c;对于manipulation任务&#xff0c;有两个问题&#xff1a;1&#xff09;相机不真实&#xff1b;2&#xff09;接触行为太复杂。 I remember just a few years ago (~201…...

JAVA秋招面试题精选-第一天总结

目录 分栏简介&#xff1a; 问题一&#xff1a;订单表每天新增500W条数据&#xff0c;分库分表应该怎么设计&#xff1f; 问题难度以及频率&#xff1a; 问题导向&#xff1a; 满分答案&#xff1a; 举一反三&#xff1a; 问题总结&#xff1a; 问题二&#xff1a;解释…...

服务器卸载安装的 Node.js

卸载安装的 Node.js 版本&#xff0c;具体步骤取决于你是通过包管理器&#xff08;如 yum 或 dnf&#xff09;安装的&#xff0c;还是通过 nvm (Node Version Manager) 安装的。以下是针对这两种情况的指南。 通过包管理器卸载 Node.js 如果你是通过 yum 或 dnf 安装的 Node.…...

深度解析 Ansible:核心组件、配置、Playbook 全流程与 YAML 奥秘(下)

文章目录 六、playbook运行playbook方式Playbook VS ShellScripts忽略错误 ignore_errorshandlers和notify结合使用触发条件playbook中tags的使用playbook中变量的使用invertory参数模板templates迭代与条件判断迭代&#xff1a;with_items迭代嵌套子变量roles 六、playbook 运…...

使用go生成、识别二维码

1、下载 # 创建目录 # 进入目录 # 执行 go mod init xxx 命令&#xff08;即&#xff1a;在当前目录初始化创建一个模块&#xff09;# 下载gozxing go get github.com/makiuchi-d/gozxing 2、生成二维码 package mainimport ("image/png""os""gith…...

LLama系列模型简要概述

LLama-1&#xff08;7B, 13B, 33B, 65B参数量&#xff1b;1.4T tokens训练数据量&#xff09; 要做真正Open的AI Efficient&#xff1a;同等预算下&#xff0c;增大训练数据&#xff0c;比增大模型参数量&#xff0c;效果要更好 训练数据&#xff1a; 书、Wiki这种量少、质量高…...

2022 年“泰迪杯”数据分析技能赛A 题竞赛作品的自动评判

2022 年“泰迪杯”数据分析技能赛A 题竞赛作品的自动评判 完整代码请私聊 博主 一、背景 在各类学科竞赛中&#xff0c;常常要求参赛者提交 Excel 或/和 PDF 格式的竞赛作品。 本赛题以某届数据分析竞赛作品的评阅为背景&#xff0c;要求参赛者根据给定的评分准则和标准答案&a…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

实战三:开发网页端界面完成黑白视频转为彩色视频

​一、需求描述 设计一个简单的视频上色应用&#xff0c;用户可以通过网页界面上传黑白视频&#xff0c;系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观&#xff0c;不需要了解技术细节。 效果图 ​二、实现思路 总体思路&#xff1a; 用户通过Gradio界面上…...

门静脉高压——表现

一、门静脉高压表现 00:01 1. 门静脉构成 00:13 组成结构&#xff1a;由肠系膜上静脉和脾静脉汇合构成&#xff0c;是肝脏血液供应的主要来源。淤血后果&#xff1a;门静脉淤血会同时导致脾静脉和肠系膜上静脉淤血&#xff0c;引发后续系列症状。 2. 脾大和脾功能亢进 00:46 …...

算法刷题-回溯

今天给大家分享的还是一道关于dfs回溯的问题&#xff0c;对于这类问题大家还是要多刷和总结&#xff0c;总体难度还是偏大。 对于回溯问题有几个关键点&#xff1a; 1.首先对于这类回溯可以节点可以随机选择的问题&#xff0c;要做mian函数中循环调用dfs&#xff08;i&#x…...