switch to using a mysql pool

With a Pool, when a connection has a timeout error, it will simply close the connection and remove it from the pool. A new connection will be made when it is needed.
do we need an explicit `conn.release()` here to return it to the pool?