Skip to main content

Django database backend for MySQL that provides pooling ala SQLAlchemy.

Project description

A SmartFile Open Source project. Read more about how SmartFile uses and contributes to Open Source software.



This is a simple Django database backend that pools MySQL connections. This backend is based on a blog post by Ed Menendez.

The main differences being:

  1. The work is done for you.
  2. Instead of cloning the Django mysql backend, we import it.

The actual pooling is done using SQLAlchemy. While imperfect (this backend is per-process only) it has usefulness. The main problem it solves for us is that it restricts a process to a certain number of total connections.


Configure this backend instead of the default Django mysql backend.

    'default': {
        'ENGINE': 'django_mysqlpool.backends.mysqlpool',
        'NAME': 'db_name',
        'USER': 'username',
        'PASSWORD': 'password',
        'HOST': '',
        'PORT': '',


There are a number of additional options that can be configured in

  • MYSQLPOOL_MAX - The number of connections allowed in the pool.
  • MYSQLPOOL_OVERFLOW - The number of connections beyond max that can be used temporarily (burst).
  • MYSQLPOOL_RECYCLE - The time (in seconds) before a connection is reaped. This value should be less than the configured timeout value in MySQL. Mysql’s default is 120s, so the default recycle interval is 119s.
  • MYSQLPOOL_TIMEOUT - The amount of time to wait for a new connection to complete before aborting.

Project details

Release history Release notifications

History Node


History Node


History Node


History Node


History Node


History Node


This version
History Node


History Node


Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page