Skip to content
Snippets Groups Projects
Commit bac35801 authored by marwengh's avatar marwengh
Browse files

develop flask crud app

parent 8ad1b19c
No related branches found
No related tags found
No related merge requests found
# Flask app settings
MYSQL_HOST=
MYSQL_USER=
MYSQL_PASSWORD=
MYSQL_DB=
# MySQL settings
MYSQL_DATABASE=
MYSQL_ROOT_PASSWORD=
\ No newline at end of file
__pycache__
.env
docker-compose.yaml
Dockerfile
\ No newline at end of file
...@@ -3,3 +3,7 @@ ...@@ -3,3 +3,7 @@
- ecrire le dockerfile pour conteneuriser l'application - ecrire le dockerfile pour conteneuriser l'application
- ecrire le docker-compose file pour lancer le conteneur - ecrire le docker-compose file pour lancer le conteneur
- utiliser les commandes de base git pour créer les branches puis les merger dans une barnche par default - utiliser les commandes de base git pour créer les branches puis les merger dans une barnche par default
# Flask MySQL CRUD Application
Il s'agit d'une application Flask simple qui effectue des opérations CRUD (Créer, Lire, Mettre à jour, Supprimer) sur une base de données MySQL. L'application est Dockerisée à l'aide de Docker Compose, qui orchestre l'application Flask et les services MySQL.
from flask import Flask from flask import Flask, jsonify, request, redirect, url_for
from flask_mysqldb import MySQL
import MySQLdb.cursors
import os import os
app = Flask(__name__) app = Flask(__name__)
# MySQL configurations
app.config['MYSQL_HOST'] = os.getenv('MYSQL_HOST')
app.config['MYSQL_USER'] = os.getenv('MYSQL_USER')
app.config['MYSQL_PASSWORD'] = os.getenv('MYSQL_PASSWORD')
app.config['MYSQL_DB'] = os.getenv('MYSQL_DB')
name = os.getenv('name')
# Initialize MySQL
mysql = MySQL(app)
# Create operation
@app.route('/add_user', methods=['POST'])
def add_user():
firstname = request.json['firstname']
email = request.json['email']
cursor = mysql.connection.cursor()
cursor.execute("INSERT INTO users (firstname, email) VALUES (%s, %s)", (firstname, email))
mysql.connection.commit()
cursor.close()
return jsonify({'message': 'User added successfully!'})
# Read operation
@app.route('/users', methods=['GET'])
def get_users():
cursor = mysql.connection.cursor(MySQLdb.cursors.DictCursor)
cursor.execute("SELECT * FROM users")
users = cursor.fetchall()
cursor.close()
return jsonify(users)
# Read operation by id
@app.route('/user/<int:id>', methods=['GET'])
def get_user(id):
cursor = mysql.connection.cursor(MySQLdb.cursors.DictCursor)
cursor.execute("SELECT * FROM users WHERE id = %s", (id,))
user = cursor.fetchone()
cursor.close()
if user:
return jsonify(user)
else:
return jsonify({'message': 'User not found'}), 404
# Update operation
@app.route('/update_user/<int:id>', methods=['PUT'])
def update_user(id):
firstname = request.json['firstname']
email = request.json['email']
cursor = mysql.connection.cursor()
cursor.execute("UPDATE users SET firstname = %s, email = %s WHERE id = %s", (firstname, email, id))
mysql.connection.commit()
cursor.close()
return jsonify({'message': 'User updated successfully!'})
# Delete operation
@app.route('/delete_user/<int:id>', methods=['DELETE'])
def delete_user(id):
cursor = mysql.connection.cursor()
cursor.execute("DELETE FROM users WHERE id = %s", (id,))
mysql.connection.commit()
cursor.close()
return jsonify({'message': 'User deleted successfully!'})
@app.route('/') @app.route('/')
def hello_world(): def hello_world():
return f'Hello, {name}!' return f'Hello, from flask app!'
if __name__ == '__main__': if __name__ == '__main__':
app.run(debug=True, host=os.environ.get('FLASK_RUN_HOST', '0.0.0.0'), port=int(os.environ.get('FLASK_RUN_PORT', 5000))) app.run(debug=True, host=os.environ.get('FLASK_RUN_HOST', '0.0.0.0'), port=int(os.environ.get('FLASK_RUN_PORT', 5000)))
......
Flask==3.0.0 Flask==3.0.0
requests==2.26.0 requests==2.26.0
Flask-DotEnv==0.1.2 Flask-DotEnv==0.1.2
Flask-MySQLdb==2.0.0
CREATE DATABASE IF NOT EXISTS workshop;
USE workshop;
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(100),
email VARCHAR(100)
);
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment