Light MySQL query wrapper with connection pooling.

Usage no npm install needed!

<script type="module">
  import easyMysql from 'https://cdn.skypack.dev/easy-mysql';


Node EasyMySQL


A small collection of simple functions that make using MySQL with node.js easier. Uses the node-mysql library.

Developed by MOG.com


npm install easy-mysql


EasyMySQL allows you to handle MySQL connection pooling, acquiring connections, and releasing them with ease. For example, where you might do this (using node-pool):

var get_widget = function(id, cb) {
    pool.acquire(function (err, client) {
        if (err) {
            cb(err, null);
        } else {
            var sql = 'select * from widgets where id = ?';
            client.query(sql, [id], function (err, results) {
                if (err || results && results.length === 0) {
                    cb(err, null);
                } else {
                    cb(null, results[0]);

...you can do this instead with EasyMySQL:

var get_widget = function(id, cb) {
    var sql = 'select * from widgets where id = ?';
    easy_mysql.get_one(sql, [id], cb);


Instance methods

get_one / getOne

Returns only one result, and if no results are found, returns null.

var sql = 'select * from widgets where id = ?';
easy_mysql.get_one(sql, [123], function (err, result) {
    cb(err, result);

get_all / getAll

Returns an array of results, and if no results are found, returns an empty array.

var sql = 'select * from widgets where id > ?';
easy_mysql.get_all(sql, [123], function (err, results) {
    cb(err, results);


Executes an arbitrary SQL query and returns the results from node-mysql.

var sql = 'update widgets set foo = 'bar' where id = ?';
easy_mysql.execute(sql, [123], function (err, results) {
    cb(err, results);

Connection Modes

You can connect three different ways with EasyMySQL:

  1. Direct: Directly establish a single connection for each query. This is probably not a good idea for production code, but may be fine for code where you don't want to set up a pool, such as in unit tests.

  2. Custom Pool: Pass in your own pool object. It must have functions named 'acquire' and 'release'.

  3. Built-in Pool: Use the built-in pool, which uses node-pool

Direct Connect Example

var settings = {
      user     : 'myuser',
      password : 'mypass',
      database : 'mydb'

var easy_mysql = EasyMySQL.connect(settings);

Custom Pool Example

var my_pool = /* create your own pool here */;
var easy_mysql = EasyMySQL.connect_with_pool(pool);

Built-in Pool Example

var settings = {
    user      : 'myuser',
    password  : 'mypass',
    database  : 'mydb',
    pool_size : 50

var easy_mysql = EasyMySQL.connect_with_easy_pool(settings);

Tests and Docs

To run tests and generate docs, first run:

npm install -d

Run the tests:

make test

Generate JSDocs:

make doc


If you would like to contribute to the project, please fork it and send us a pull request. Please add tests for any new features or bug fixes. Also run make lint before submitting the pull request.


  • Add connection chaining.
  • Allow functions to be called with out a callback argument.


node-easy-mysql is licensed under the MIT license.