Welcome to Flask-MySQLdb’s documentation!

Flask-MySQLdb provides MySQL connection for Flask.


First, install Flask-MySQLdb:

$ pip install flask-mysqldb

Flask-MySQLdb depends, and will install for you, recent versions of Flask (0.12.4 or later) and mysqlclient. Flask-MySQLdb is compatible with and tested on Python 2.7, 3.5, 3.6 and 3.7.

Next, add a MySQL instance to your code:

from flask import Flask
from flask_mysqldb import MySQL

app = Flask(__name__)
mysql = MySQL(app)

def users():
    cur = mysql.connection.cursor()
    cur.execute('''SELECT user, host FROM mysql.user''')
    rv = cur.fetchall()
    return str(rv)

if __name__ == '__main__':


MySQL understands the following configuration directives:

MYSQL_HOST name of host to connect to. Default: use the local host via a UNIX socket (where applicable)
MYSQL_USER user to authenticate as. Default: current effective user.
MYSQL_PASSWORD password to authenticate with. Default: no password.
MYSQL_DB database to use. Default: no default database.
MYSQL_PORT TCP port of MySQL server. Default: 3306.
MYSQL_UNIX_SOCKET location of UNIX socket. Default: use default location or TCP for remote hosts.
MYSQL_CONNECT_TIMEOUT Abort if connect is not completed within given number of seconds. Default: 10
MYSQL_READ_DEFAULT_FILE MySQL configuration file to read; see the MySQL documentation for mysql_options().
MYSQL_USE_UNICODE If True, CHAR and VARCHAR and TEXT columns are returned as Unicode strings, using the configured character set.
MYSQL_CHARSET If present, the connection character set will be changed to this character set, if they are not equal. Default: ‘utf-8’
MYSQL_SQL_MODE If present, the session SQL mode will be set to the given string.
MYSQL_CURSORCLASS If present, the cursor class will be set to the given string.



class flask_mysqldb.MySQL(app=None)

Attempts to connect to the MySQL server.

Returns:Bound MySQL connection object if successful or None if unsuccessful.

Initialize the app for use with this MySQL class. This is called automatically if app is passed to __init__().

Parameters:app (flask.Flask) – the application to configure for use with this MySQL class.



  • 0.2.0: September 5, 2015 - Added option to change the cursor. Thanks to @Sp1tF1r3 on GitHub.
  • 0.1.1: February 14, 2015 - Initial Release