How to connect a MySQL database to a Flask application

How to Connect a MySQL Database to a Flask Application

Connecting a MySQL database to a Flask application can seem daunting for beginners, but it’s a straightforward process that can greatly enhance your web application’s functionality and data management capabilities. In this article, we’ll explore the necessary steps, code snippets, and troubleshooting tips to help you establish a seamless connection between a MySQL database and your Flask app.

What is Flask?

Flask is a lightweight web framework for Python that enables developers to build web applications quickly. It’s designed to be simple and flexible, making it an excellent choice for both beginners and experienced developers. Flask provides the essential tools to create web applications without the overhead of more complex frameworks.

Why Use MySQL with Flask?

MySQL is one of the most popular relational database management systems. It offers:

  • Reliability: Proven stability and performance, making it suitable for production use.
  • Scalability: Ability to handle large volumes of data and high traffic.
  • Robust Security: Features like user access control and data encryption.

Combining Flask with MySQL allows developers to create dynamic web applications that can store, retrieve, and manipulate data efficiently.

Prerequisites

Before we dive into the coding, ensure you have the following:

  • Python installed on your machine (version 3.6 or higher).
  • Flask installed via pip: bash pip install Flask
  • MySQL server installed and running. You can use tools like MySQL Workbench for database management.
  • mysql-connector-python package installed: bash pip install mysql-connector-python
  • Basic understanding of Python and SQL.

Step-by-Step Guide to Connecting MySQL with Flask

Step 1: Setting Up Your MySQL Database

  1. Create a Database: Open your MySQL Workbench and run the following SQL command to create a database: sql CREATE DATABASE flask_db;

  2. Create a Table: Inside your newly created database, create a simple table: ```sql USE flask_db;

CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(100) NOT NULL, email VARCHAR(100) NOT NULL ); ```

Step 2: Setting Up Your Flask Application

  1. Create a New Flask Project: In your preferred directory, create a new folder for your Flask app.

  2. Create a Python File: Inside this folder, create a new file called app.py.

  3. Import Required Libraries: python from flask import Flask, jsonify, request import mysql.connector

Step 3: Configure the MySQL Connection

Add the following code to app.py to establish a connection to your MySQL database:

app = Flask(__name__)

def get_db_connection():
    connection = mysql.connector.connect(
        host='localhost',
        user='your_username',      # Replace with your MySQL username
        password='your_password',  # Replace with your MySQL password
        database='flask_db'
    )
    return connection

Step 4: Creating API Endpoints

Now, let’s create some basic CRUD (Create, Read, Update, Delete) operations.

Creating a User

@app.route('/users', methods=['POST'])
def create_user():
    data = request.get_json()
    username = data['username']
    email = data['email']

    connection = get_db_connection()
    cursor = connection.cursor()
    cursor.execute('INSERT INTO users (username, email) VALUES (%s, %s)', (username, email))
    connection.commit()
    cursor.close()
    connection.close()

    return jsonify({'message': 'User created!'}), 201

Retrieving Users

@app.route('/users', methods=['GET'])
def get_users():
    connection = get_db_connection()
    cursor = connection.cursor(dictionary=True)
    cursor.execute('SELECT * FROM users')
    users = cursor.fetchall()
    cursor.close()
    connection.close()

    return jsonify(users)

Step 5: Running Your Application

Finally, add the following lines at the end of your app.py file to run your Flask application:

if __name__ == '__main__':
    app.run(debug=True)

Now, run your Flask application by executing:

python app.py

Step 6: Testing Your Endpoints

You can use tools like Postman or curl to test your API endpoints.

  • To create a user, send a POST request to http://127.0.0.1:5000/users with a JSON body: json { "username": "testuser", "email": "testuser@example.com" }

  • To retrieve users, send a GET request to http://127.0.0.1:5000/users.

Troubleshooting Common Issues

  1. Connection Errors: Ensure your MySQL server is running and that you’re using the correct credentials.

  2. Data Not Saving: Check your SQL syntax and ensure you’re committing transactions after executing statements.

  3. Environment Issues: If running in a virtual environment, confirm that all necessary packages are installed in that environment.

Conclusion

Connecting a MySQL database to a Flask application is a fundamental skill for modern web development. With the steps outlined above, you can create a robust application capable of managing user data efficiently. As you gain more experience, consider exploring SQLAlchemy, an ORM that simplifies database interactions. Happy coding!

SR
Syed
Rizwan

About the Author

Syed Rizwan is a Machine Learning Engineer with 5 years of experience in AI, IoT, and Industrial Automation.