Nodejs请教高手指教在http架构下调用mysql,最好是用node-libmysqlclient
Nodejs请教高手指教在http架构下调用mysql,最好是用node-libmysqlclient
当然可以!下面是一个关于如何在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}`);
});
解释
- 数据库连接:我们使用
mysql2
库创建了一个连接池。这有助于管理多个数据库连接,提高性能。 - GET 请求:当用户访问
/users
时,我们将从users
表中获取所有记录。 - POST 请求:当用户发送带有
name
和email
的数据到/users
时,我们将这些数据插入到users
表中。 - 错误处理:所有数据库操作都包裹在
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
可能不是最流行的库,但我们可以使用更常见的库如mysql
或mysql2
。下面将通过一个简单的例子展示如何在Node.js中连接MySQL数据库并执行查询。
使用 mysql2
库
首先安装mysql2
库:
npm install mysql2
然后可以创建一个简单的服务器来处理HTTP请求,并在其中与MySQL数据库交互。
示例代码
-
创建数据库连接
const mysql = require('mysql2'); // 创建一个数据库连接池 const pool = mysql.createPool({ host: 'localhost', user: 'root', database: 'testdb', password: 'yourpassword' });
-
设置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查询等。