Nodejs请教高手指教在http架构下调用mysql,最好是用node-libmysqlclient

Nodejs请教高手指教在http架构下调用mysql,最好是用node-libmysqlclient

6 回复

当然可以!下面是一个关于如何在HTTP架构下使用Node.js调用MySQL数据库,并且推荐使用node-mysql2库(因为node-libmysqlclient并不是一个广泛使用的库)的详细指南。

安装必要的库

首先,你需要安装Node.js环境。然后,在你的项目目录中初始化一个新的Node.js项目并安装必要的依赖:

npm init -y
npm install express mysql2 body-parser

这里我们使用了express来快速搭建HTTP服务器,mysql2作为MySQL客户端库,以及body-parser来解析请求体。

示例代码

接下来,我们将创建一个简单的Express应用,该应用可以接收HTTP请求,并与MySQL数据库进行交互。

创建server.js文件

const express = require('express');
const mysql = require('mysql2/promise');
const bodyParser = require('body-parser');

const app = express();
app.use(bodyParser.json());

// 创建MySQL连接池
const pool = mysql.createPool({
  host: 'localhost',
  user: 'root',
  password: 'yourpassword',
  database: 'testdb',
  waitForConnections: true,
  connectionLimit: 10,
  queueLimit: 0
});

app.get('/users', async (req, res) => {
  try {
    const [rows] = await pool.query('SELECT * FROM users');
    res.json(rows);
  } catch (error) {
    res.status(500).json({ error: error.message });
  }
});

app.post('/users', async (req, res) => {
  const { name, email } = req.body;
  try {
    const [result] = await pool.query('INSERT INTO users (name, email) VALUES (?, ?)', [name, email]);
    res.status(201).json({ id: result.insertId });
  } catch (error) {
    res.status(500).json({ error: error.message });
  }
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

解释

  1. 数据库连接:我们使用mysql2库创建了一个连接池。这有助于管理多个数据库连接,提高性能。
  2. GET 请求:当用户访问/users时,我们将从users表中获取所有记录。
  3. POST 请求:当用户发送带有nameemail的数据到/users时,我们将这些数据插入到users表中。
  4. 错误处理:所有数据库操作都包裹在try...catch块中,以确保任何错误都能被捕获并返回适当的错误响应。

这样,你就可以在一个简单的HTTP服务器上通过Node.js与MySQL数据库进行交互了。


mysql 不是都用这个的吗 …https://github.com/felixge/node-mysql

网上有资料说用这个pure node script会有性能问题。。。

今天对 mysql 和 mysql-libmysqlclient 做了测试,对于数据量较大的 SELECT,mysql-libmysqlclient 优势明显。

  • mysql 2.0.0-alpha9

读取 1000 次,每次读取 2000 条记录

耗时 10626 ms 每秒 94

耗时 10447 ms 每秒 95

耗时 10602 ms 每秒 94

写入 10000 条记录,每次写入 1 条

耗时 3444 ms 每秒 2903

耗时 3417 ms 每秒 2926

耗时 3384 ms 每秒 2955

  • mysql-libmysqlclient 1.5.2

读取 1000 次,每次读取 2000 条记录

耗时 4698 ms 每秒 212

耗时 4847 ms 每秒 206

耗时 4802 ms 每秒 208

写入 10000 条记录,每次写入 1 条

耗时 2718 ms 每秒 3679

耗时 2708 ms 每秒 3692

耗时 2666 ms 每秒 3750

谢兄台,但楼上那位大哥力挺native mysql,我现在已经开始nodemysql之旅了;等搭好了架构,再思替换吧

在HTTP架构下使用Node.js调用MySQL数据库时,推荐使用一些成熟的库来简化操作。虽然node-libmysqlclient可能不是最流行的库,但我们可以使用更常见的库如mysqlmysql2。下面将通过一个简单的例子展示如何在Node.js中连接MySQL数据库并执行查询。

使用 mysql2

首先安装mysql2库:

npm install mysql2

然后可以创建一个简单的服务器来处理HTTP请求,并在其中与MySQL数据库交互。

示例代码

  1. 创建数据库连接

    const mysql = require('mysql2');
    
    // 创建一个数据库连接池
    const pool = mysql.createPool({
      host: 'localhost',
      user: 'root',
      database: 'testdb',
      password: 'yourpassword'
    });
    
  2. 设置HTTP服务器

    const http = require('http');
    const hostname = '127.0.0.1';
    const port = 3000;
    
    const server = http.createServer((req, res) => {
      if (req.url === '/data') {
        // 从数据库获取数据
        pool.query('SELECT * FROM users', (err, results, fields) => {
          if (err) throw err;
          res.statusCode = 200;
          res.setHeader('Content-Type', 'application/json');
          res.end(JSON.stringify(results));
        });
      } else {
        res.statusCode = 404;
        res.end('Not Found');
      }
    });
    
    server.listen(port, hostname, () => {
      console.log(`Server running at http://${hostname}:${port}/`);
    });
    

解释

  • 数据库连接:我们创建了一个名为pool的连接池,这是处理数据库连接的好方法,特别是当多个请求并发时。

  • HTTP服务器:我们创建了一个简单的HTTP服务器,监听3000端口。当访问/data路径时,它会从MySQL数据库中检索用户数据并返回JSON格式的数据。

  • 错误处理:我们添加了基本的错误处理来确保任何数据库查询失败时都能捕获错误。

这个示例展示了如何在一个HTTP服务中集成MySQL数据库访问。你可以根据实际需要调整配置参数、SQL查询等。

回到顶部