mysql2,用于与 MySQL 数据库进行交互

时间:2025-09-23 15:05

mysql2 是一个流行的 Node.js 客户端,用于与 MySQL 数据库进行交互。它是 mysql 模块的改进版本,提供了更好的性能、Promise 支持和更多功能。

主要特点

  1. 性能优化:比传统的 mysql 模块更快,尤其是在处理大量数据时。
  2. Promise 支持:原生支持 Promise API,便于使用 async/await 语法。
  3. 预处理语句:支持参数化查询,防止 SQL 注入。
  4. 二进制协议:使用 MySQL 二进制协议,效率更高。
  5. 流式处理:支持大结果集的流式处理,降低内存占用。

基本使用步骤

1. 安装

bash
npm install mysql2
 

2. 建立连接并执行查询

javascript
运行
const mysql = require('mysql2/promise'); // 引入 Promise 版本

// 连接数据库
async function connectAndQuery() {
  let connection;
  try {
    // 创建连接
    connection = await mysql.createConnection({
      host: 'localhost',
      user: 'your_username',
      password: 'your_password',
      database: 'your_database'
    });

    // 执行查询
    const [rows] = await connection.execute('SELECT * FROM users WHERE id = ?', [1]);
    console.log('查询结果:', rows);

  } catch (err) {
    console.error('错误:', err);
  } finally {
    // 关闭连接
    if (connection) {
      await connection.end();
    }
  }
}

// 调用函数
connectAndQuery();
 

关键功能示例

1. 预处理语句(防止 SQL 注入)

javascript
运行
// 安全的参数化查询
const [rows] = await pool.execute(
  'INSERT INTO users (name, age) VALUES (?, ?)',
  ['Alice', 30] // 参数数组
);
 

2. 事务处理

javascript
运行
async function transferMoney() {
  const connection = await pool.getConnection();
  try {
    await connection.beginTransaction();
    
    // 执行事务操作
    await connection.execute('UPDATE accounts SET balance = balance - 100 WHERE id = 1');
    await connection.execute('UPDATE accounts SET balance = balance + 100 WHERE id = 2');
    
    // 提交事务
    await connection.commit();
  } catch (err) {
    // 回滚事务
    await connection.rollback();
    throw err;
  } finally {
    connection.release(); // 释放连接回池
  }
}
 

3. 流式处理大结果集

javascript
运行
const stream = pool.query('SELECT * FROM large_table').stream();

stream.on('data', (row) => {
  // 逐行处理数据,不占用大量内存
  console.log(row);
});

stream.on('end', () => {
  console.log('处理完成');
});
 

与传统 mysql 模块的区别

  • mysql2 原生支持 Promise,而 mysql 需要额外包装(如 util.promisify)。
  • mysql2 性能更好,尤其是在高并发场景。
  • mysql2 提供更完善的错误处理和类型转换。

总结

mysql2 是 Node.js 开发中连接 MySQL 的优选工具,尤其适合需要高性能和现代异步语法(async/await)的项目。通过连接池管理连接、使用参数化查询,可以构建安全且高效的数据库交互逻辑。
MySQL处理中文排序,除了拼音还能怎么办?一文掌握拼音与笔画排序的所有奥秘
一小时速通MySQL:零基础入门到精通,看这篇就够了(下篇)
一小时速通MySQL:零基础入门到精通,看这篇就够了(上篇)
MySQL小白下载指南 (以 Windows 为例)
MySQL安装太难?看完这篇就够了!小白专属下载安装指南
MySQL清空表数据,你用DELETE还是TRUNCATE?一文讲清两者核心差异与正确使用场景
从查询崩溃到丝滑流畅:详解MySQL性能优化的核心路径与高频实战技巧
MySQL性能优化漫谈:从金字塔法则到避坑指南,一位老DBA的架构思维与实践总结
千万级数据何去何从?一文读懂MySQL分库分表面试与工程实践的核心要点
mysql2,用于与 MySQL 数据库进行交互