🔧 AI Nachrichten GitHub Release: anomalyco/opencode v1.18.22 (24.08.2026)(24.08.2026 um 16:43 Uhr)
🔧 AI Nachrichten GitHub Release: anomalyco/opencode v1.18.26 (01.09.2026)(01.09.2026 um 23:52 Uhr)
🔧 AI Nachrichten GitHub Release: anomalyco/opencode v1.18.29 (05.09.2026)(05.09.2026 um 01:47 Uhr)
🔧 AI Nachrichten GitHub Release: anomalyco/opencode v1.18.30 (09.09.2026)(09.09.2026 um 05:34 Uhr)
🔧 AI Nachrichten GitHub Release: cline/cline v4.1.17 (02.09.2026)(02.09.2026 um 07:40 Uhr)
🔧 AI Nachrichten GitHub Release: cline/cline vdesktop-v0.0.25 (10.09.2026)(10.09.2026 um 06:57 Uhr)
🔧 AI Nachrichten GitHub Release: dbeaver/dbeaver v26.2.0 (30.08.2026)(30.08.2026 um 20:08 Uhr)
🔧 AI Nachrichten GitHub Release: openclaw/openclaw v2026.9.4 (11.09.2026)(11.09.2026 um 06:12 Uhr)
🪟 Windows TippsWindows 11: Nach Apples Erfolg ändert auch Microsoft den Kurs(26.08.2026 um 09:55 Uhr)
🔧 AI Nachrichten GitHub Release: anomalyco/opencode v1.18.22 (24.08.2026)(24.08.2026 um 16:43 Uhr)
🔧 AI Nachrichten GitHub Release: anomalyco/opencode v1.18.26 (01.09.2026)(01.09.2026 um 23:52 Uhr)
🔧 AI Nachrichten GitHub Release: anomalyco/opencode v1.18.29 (05.09.2026)(05.09.2026 um 01:47 Uhr)
🔧 AI Nachrichten GitHub Release: anomalyco/opencode v1.18.30 (09.09.2026)(09.09.2026 um 05:34 Uhr)
🔧 AI Nachrichten GitHub Release: cline/cline v4.1.17 (02.09.2026)(02.09.2026 um 07:40 Uhr)
🔧 AI Nachrichten GitHub Release: cline/cline vdesktop-v0.0.25 (10.09.2026)(10.09.2026 um 06:57 Uhr)
🔧 AI Nachrichten GitHub Release: dbeaver/dbeaver v26.2.0 (30.08.2026)(30.08.2026 um 20:08 Uhr)
🔧 AI Nachrichten GitHub Release: openclaw/openclaw v2026.9.4 (11.09.2026)(11.09.2026 um 06:12 Uhr)
🪟 Windows TippsWindows 11: Nach Apples Erfolg ändert auch Microsoft den Kurs(26.08.2026 um 09:55 Uhr)

🔧 Programmierung 🕛 vor 1 Jahr 8 Min Lesezeit
0

Task Manager App with Flask and MySQL

↗ Quelle (dev.to)
🗣️ Stimme:
📑 Inhaltsübersicht




Project Overview



This project is a Task Manager App built with Flask and MySQL. It provides a simple RESTful API to manage tasks, demonstrating basic CRUD (Create, Read, Delete) operations.



This application is perfect for understanding how Flask applications can be containerized using Docker and connected with a MySQL database.






Features




  • Add new tasks

  • View all tasks

  • Delete a task by ID






Flask Code: app.py






CODE
from flask import Flask, request, jsonify
import mysql.connector
from mysql.connector import Error

app = Flask(__name__)

# Database connection function
def get_db_connection():
try:
connection = mysql.connector.connect(
host="db",
user="root",
password="example",
database="task_db"
)
return connection
except Error as e:
return str(e)

# Route for the home page
@app.route('/')
def home():
return "Welcome to the Task Management API! Use /tasks to interact with tasks."

# Route to create a new task
@app.route('/tasks', methods=['POST'])
def add_task():
task_description = request.json.get('description')
if not task_description:
return jsonify({"error": "Task description is required"}), 400

connection = get_db_connection()
if isinstance(connection, str): # If connection fails
return jsonify({"error": connection}), 500

cursor = connection.cursor()
cursor.execute("INSERT INTO tasks (description) VALUES (%s)", (task_description,))
connection.commit()
task_id = cursor.lastrowid
cursor.close()
connection.close()

return jsonify({"message": "Task added successfully", "task_id": task_id}), 201

# Route to get all tasks
@app.route('/tasks', methods=['GET'])
def get_tasks():
connection = get_db_connection()
if isinstance(connection, str): # If connection fails
return jsonify({"error": connection}), 500

cursor = connection.cursor()
cursor.execute("SELECT id, description FROM tasks")
tasks = cursor.fetchall()
cursor.close()
connection.close()

task_list = [{"id": task[0], "description": task[1]} for task in tasks]
return jsonify(task_list), 200

# Route to delete a task by ID
@app.route('/tasks/<int:task_id>', methods=['DELETE'])
def delete_task(task_id):
connection = get_db_connection()
if isinstance(connection, str): # If connection fails
return jsonify({"error": connection}), 500

cursor = connection.cursor()
cursor.execute("DELETE FROM tasks WHERE id = %s", (task_id,))
connection.commit()
cursor.close()
connection.close()

return jsonify({"message": "Task deleted successfully"}), 200

if __name__ == "__main__":
app.run(host='0.0.0.0')











MySQL Database Setup Script



Create a MySQL script named init-db.sql to set up the database and the tasks table:



To create the init-db.sql script, follow these steps:



Create a new file in your project directory:



Navigate to the project folder and create a new file named init-db.sql

Add SQL commands to set up the database and tasks table:



Open init-db.sql in a text editor and add the following SQL commands:




CODE

CREATE DATABASE IF NOT EXISTS task_db;
USE task_db;

CREATE TABLE IF NOT EXISTS tasks (
id INT AUTO_INCREMENT PRIMARY KEY,
description VARCHAR(255) NOT NULL
);










Save the file:



I saved the file as init-db.sql in the project folder where my docker-compose.yml is located.



In the docker-compose.yml:



In my docker-compose.yml file, I have the volumes configuration that points to this script.



Below is the docker-compose.yml file






Docker Configuration



docker-compose.yml:




CODE
version: '3'
services:
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
MYSQL_DATABASE: task_db
ports:
- "3306:3306"
volumes:
- db_data:/var/lib/mysql
- ./init-db.sql:/docker-entrypoint-initdb.d/init-db.sql

web:
build: .
ports:
- "5000:5000"
depends_on:
- db
environment:
FLASK_ENV: development
volumes:
- .:/app

volumes:
db_data:







This configuration ensures that when the MySQL container starts, it will execute the init-db.sql script to set up the task_db database and create the tasks table.



Note: The docker-entrypoint-initdb.d/ directory is used by MySQL containers to execute .sql scripts during the initial startup of the container.






Explanation:



1. version: '3': Specifies the version of Docker Compose being used.



2. services:





  • db:





    • image: mysql:5.7: Uses the MySQL 5.7 image.


    • environment: Sets environment variables for the MySQL container:



      • MYSQL_ROOT_PASSWORD: The root password for MySQL.


      • MYSQL_DATABASE: The database to be created at startup.








    • ports: Maps the MySQL container's port 3306 to your host's port 3306.




    • volumes:



      • db_data:/var/lib/mysql: Persists the database data in a Docker volume called db_data.


      • ./init-db.sql:/docker-entrypoint-initdb.d/init-db.sql: Mounts the init-db.sql script into the MYSQL container's initialization directory so it runs when the container starts.












  • web:





    • build: .: Builds the Docker image for your Flask app using the Dockerfile in the current directory.


    • ports: Maps the Flask app's port 5000 to your host's port 5000.


    • depends_on: Ensures that the db service starts before the web service.


    • environment: Sets the environment variable for Flask.


    • volumes: Mounts the current project directory into the /app directory inside the container.
      ### volumes section:
      db_data: Defines a named volume db_data to persist the MySQL data between container restarts.











Dockerfile:



Define the build instructions for the Flask app:




CODE
FROM python:3.9-slim

WORKDIR /app

# Install dependencies

COPY requirements.txt .
RUN pip install -r requirements.txt

# Install wait-for-it tool#

RUN apt-get update && apt-get install -y wait-for-it

#Copy the application code>

COPY . .

# Use wait-for-it to wait for DB and start the Flask app

CMD ["wait-for-it", "db:3306", "--", "python", "app.py"]







This Dockerfile sets up a lightweight Python environment for a Flask app:



1. Base Image: Uses python:3.9-slim for minimal Python runtime.

Working Directory: Sets /app as the working directory.



2. Dependencies: Copies requirements.txt and installs dependencies via pip.



3. Tool Installation: Installs wait-for-it for checking service readiness.



4. Application Code: Copies all app code into the container.



5. Startup Command: Runs wait-for-it to ensure the MySQL DB (db:3306) is ready before starting app.py.





Requirements.txt File



This requirements.txt specifies that the Python project requires the Flask framework for building web applications and mysql-connector-python for connecting and interacting with a MySQL database. These packages will be installed within the Docker container when pip install -r requirements.txt is run during the image build process. This ensures the app has the necessary tools to run the Flask server and communicate with the MySQL database.




CODE
Flask
mysql-connector-python







After creating all the files the next step is to build and run the service the following command is used to build and run the service.




CODE
docker-compose build
docker-compose up







to run the service in a detached mode I used the following command instead of docker-compose up




CODE
docker-compose up -d






when I want to stop the service I use the command




CODE
docker-compose down






Now once the service is in the running state run the command




CODE
docker ps 






to ensure the containers are running



Now its time to check the service API to ensure they are working as expected.






Testing the Project



Access the app at



You can use Postman or curl to test the /tasks endpoint for POST, GET, and DELETE operations. In ths case I would be using curl.





curl Commands:




  • Get Tasks:



The GET method fetches all tasks.




CODE
curl http://localhost:5000/tasks







on your browser it shows you all the task you have added as explained in the add task.




  • Add a Task:



The POST method creates tasks in the database.




CODE
curl -X POST http://localhost:5000/tasks -H "Content-Type: application/json" -d '{"description": "Sample Task"}'






This will send a POST request to your Flask app with a task description. If the task is added successfully, you should receive a response like:




CODE
{
"message": "Task added successfully",
"task_id": 1
}






check your browser's network tab or logs to verify that the POST request is being made correctly.



I ran the command a couple of times and customized the part where its says Simple Task to generate different outputs here are the commands I ran and the out puts can be seen in the images below.




CODE
 curl -X POST http://localhost:5000/tasks -H "Content-Type: application/json" -d '{"description": "My name is Matthew Tarfa am the Cloud Chief"}'











CODE
 curl -X POST http://localhost:5000/tasks -H "Content-Type: application/json" -d '{"description": "I love DevOps!"}'











Conclusion



Creating a Task Manager App using Flask and MySQL is an excellent way to understand the fundamentals of web service development, database integration, and containerization with Docker.



This project encapsulates how web servers and databases work in unison to provide seamless functionality.



Embrace this learning experience and use it as a stepping stone to deeper web and cloud-based development projects.

Vollständiger Original-Bericht
Ausführliche Details, Code-Beispiele & Hersteller-Stellungnahme auf dev.to.
↗ Original-Artikel auf dev.to lesen
Wie bewertest du diesen Beitrag?
1 Klick Feedback
Teilen mit Netzwerk & Team:

Community-Analysen & Experten-Meinungen 0

Verfasse deine eigene Analyse, teile Workarounds oder diskutiere diesen Vorfall im Blog.
Noch keine Community-Analyse verfasst. Markiere einen Textabschnitt oder klicke oben auf Eigene Analyse verfassen“!
Community Pulse: Relevanz-Einschätzung
1 Klick Experten-Votum
🔴 Akute Relevanz 0%
🟡 In Evaluierung 0%
🟢 Keine Auswirkung 0%
Spannende Innovation 0%
Verwandte Story-Cluster & Quellen (Vektor-KI)
Port 8095 Engine
9 Quellen
GitHub Release: anomalyco/opencode v1.18.22 (24.08.2026)
2 Quellen
Windows 11: Nach Apples Erfolg ändert auch Microsoft den Kurs
1 Quelle
Stichtag 13. Oktober: Windows 11 legt den Schalter um
Ähnliche Beiträge
🔍 Verwandte News

Auch interessante Nachrichten Task Manager App with Flask and MySQL

Thematisch verwandte Begriffe: Task, Manager, with, Flask · 6 Treffer

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...