OUJOOD.COM
1. Présentation des deux bibliothèques
🔹 MySQL (mysql)
La bibliothèque mysql est l’une des premières solutions Node.js pour interagir avec MySQL. Elle est simple à utiliser et offre les fonctionnalités de base.
- ✅ API simple et intuitive.
- ✅ Connexions persistantes et gestion des pools.
- ❌ Ne supporte pas nativement les Promises et async/await.
🔹 MySQL2 (mysql2)
La bibliothèque mysql2 est une version optimisée de `mysql`, avec un meilleur support des performances et des Promises.
- ✅ Plus rapide et optimisé.
- ✅ Supporte les Promises et async/await.
- ✅ Supporte les requêtes préparées pour sécuriser les requêtes SQL.
2. Comparaison des fonctionnalités
| Fonctionnalité | MySQL | MySQL2 |
|---|---|---|
| Compatibilité avec MySQL | ✅ Oui | ✅ Oui |
| Support de Promises (async/await) | ❌ Non | ✅ Oui |
| Performance | ⚠️ Standard | 🚀 Plus rapide |
| Support des requêtes préparées | ❌ Non | ✅ Oui |
3. Exemple d'utilisation
🔹 Avec MySQL (callback-based)
const mysql = require('mysql');
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
database: 'test'
});
connection.connect();
connection.query('SELECT * FROM users', (error, results, fields) => {
if (error) throw error;
console.log(results);
});
connection.end();
Explication ligne par ligne :
const mysql = require('mysql');→ Charge le module MySQL.const connection = mysql.createConnection({...});→ Initialise une connexion avec les détails de la base de données.connection.connect();→ Établit la connexion.connection.query('SELECT * FROM users', ...);→ Exécute une requête SQL pour récupérer tous les utilisateurs.if (error) throw error;→ Vérifie si une erreur survient.console.log(results);→ Affiche les résultats.connection.end();→ Ferme la connexion.
🔹 Avec MySQL2 (async/await)
const mysql = require('mysql2/promise');
async function fetchUsers() {
const connection = await mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
database: 'test'
});
const [rows] = await connection.execute('SELECT * FROM users');
console.log(rows);
await connection.end();
}
fetchUsers();
Explication ligne par ligne :
const mysql = require('mysql2/promise');→ Charge la version de MySQL2 qui supporte les Promises.async function fetchUsers() { ... }→ Déclare une fonction asynchrone.const connection = await mysql.createConnection({...});→ Établit la connexion en mode Promise.const [rows] = await connection.execute('SELECT * FROM users');→ Exécute une requête SQL et attend la réponse.console.log(rows);→ Affiche les résultats.await connection.end();→ Ferme la connexion proprement.fetchUsers();→ Appelle la fonction pour exécuter le script.
4. Quand choisir MySQL2 au lieu de MySQL ?
Il est recommandé d’utiliser MySQL2 plutôt que MySQL car :
- ✅ Plus rapide et optimisé.
- ✅ Supporte les Promises et async/await, facilitant l’écriture du code.
- ✅ Compatible avec MySQL, donc migration facile.
⚠️ Cas où MySQL pourrait être utilisé
- Si vous travaillez sur un ancien projet déjà basé sur MySQL.
- Si vous utilisez une architecture callback et ne souhaitez pas refactoriser.
5. Conclusion
👉 MySQL2 est le meilleur choix pour la plupart des projets Node.js grâce à ses performances et son support des Promises.
Si vous commencez un nouveau projet, optez pour MySQL2 ! 🚀