下面是关于“Express连接MySQL及数据库连接池技术实例”的完整攻略。
简介
在 Express 应用中,我们经常需要使用 MySQL 数据库来存储数据。本文将介绍如何使用 Node.js 的 mysql 模块连接 MySQL 数据库,并使用连接池技术实现高效的数据库连接。
步骤
1. 安装 mysql 模块
在使用 mysql 模块连接 MySQL 数据库之前,需要先安装该模块。可以使用以下命令进行安装:
npm install mysql --save
2. 连接数据库
在 Express 应用中,可以在 app.js 或者其他文件中,通过以下代码来连接数据库:
const mysql = require('mysql')
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'password',
database: 'test'
})
connection.connect((err) => {
if (err) {
console.error('error connecting: ' + err.stack)
return
}
console.log('connected as id ' + connection.threadId)
})
在上面的代码中,我们使用了 mysql 模块创建了一个名为 connection 的连接对象,该对象配置了连接数据库的相关属性(host、user、password 等)。同时我们通过 connect() 方法实现了与数据库的连接,并在控制台中输出了一个连接对象的标识符 threadId。
3. 使用连接池
在高并发的情况下,如果每次请求都创建一个新的数据库连接,会大大降低服务器的处理能力,而连接池是一种有效的方式来解决这个问题。
我们可以通过以下代码创建一个连接池:
const mysql = require('mysql')
const pool = mysql.createPool({
host: 'localhost',
user: 'root',
password: 'password',
database: 'test',
connectionLimit: 10
})
在上面的代码中,我们使用 mysql 模块创建了一个名为 pool 的连接池对象,该对象配置了连接数据库的相关属性(host、user、password 等)。同时我们通过 connectionLimit 属性指定了连接池的大小为 10。
在需要连接数据库的地方,我们可以通过以下代码从连接池中获取一个连接:
pool.getConnection((err, connection) => {
if (err) {
throw err
}
// 执行 SQL 语句
connection.query('SELECT * FROM users', (err, result) => {
// 处理结果
console.log(result)
// 释放连接
connection.release()
})
})
在上面的代码中,我们使用 getConnection() 方法从连接池中获取一个连接对象(该方法会返回一个错误对象和一个连接对象)。同时我们使用 connection.query() 方法执行 SQL 语句,并在回调函数中处理结果。在处理完结果后,我们需要通过 connection.release() 方法释放连接回到连接池中。
示例说明
示例一
以下示例展示了如何向 MySQL 数据库中插入一条数据:
const mysql = require('mysql')
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'password',
database: 'test'
})
connection.connect((err) => {
if (err) {
console.error('error connecting: ' + err.stack)
return
}
console.log('connected as id ' + connection.threadId)
const sql = 'INSERT INTO users (name, age) VALUES (?, ?)'
const values = ['John', 30]
connection.query(sql, values, (err, result) => {
if (err) {
throw err
}
console.log('Inserted ' + result.affectedRows + ' row(s).')
})
connection.end()
})
在上面的代码中,我们使用了 INSERT INTO 语句向 users 表中插入了一条数据,并在控制台中输出了操作结果。
示例二
以下示例展示了如何从 MySQL 数据库中查询数据:
const mysql = require('mysql')
const pool = mysql.createPool({
host: 'localhost',
user: 'root',
password: 'password',
database: 'test',
connectionLimit: 10
})
pool.getConnection((err, connection) => {
if (err) {
throw err
}
const sql = 'SELECT * FROM users'
connection.query(sql, (err, result) => {
if (err) {
throw err
}
console.log(result)
connection.release()
})
})
在上面的代码中,我们使用了 SELECT * FROM 语句从 users 表中查询了所有的记录,并在控制台中输出了查询结果。
总结
通过本文的介绍,我们学会了在 Express 应用中使用 Node.js 的 mysql 模块连接 MySQL 数据库,并使用连接池技术实现高效的数据库连接。希望本文能对大家有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Express连接MySQL及数据库连接池技术实例 - Python技术站