Flask SQLAlchemy
Flask SQLAlchemy is an ORM tool which establishes the relationship between the objects and the tables of the relational databases.
In this section of the tutorial, we will create a small web application using flask-sqlalchemy
Install flask-sqlalchemy:
pip install flask-sqlalchemy
import flask_sqlalchemy
Code small web application using flask-sqlalchemy
#app.py from flask import Flask, render_template, url_for, request, flash, redirect from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///employees.sqlite3' app.config['SECRET_KEY'] = "cairocoders-ednalan23589" db = SQLAlchemy(app) class Employees(db.Model): id = db.Column('employee_id', db.Integer, primary_key = True) name = db.Column(db.String(100)) salary = db.Column(db.Float(50)) age = db.Column(db.String(200)) pin = db.Column(db.String(10)) def __init__(self, name, salary, age,pin): self.name = name self.salary = salary self.age = age self.pin = pin @app.route('/') def list_employees(): return render_template('list_employees.html', Employees = Employees.query.all() ) @app.route('/add', methods = ['GET', 'POST']) def addEmployee(): if request.method == 'POST': if not request.form['name'] or not request.form['salary'] or not request.form['age']: flash('Please enter all the fields', 'error') else: employee = Employees(request.form['name'], request.form['salary'], request.form['age'], request.form['pin']) db.session.add(employee) db.session.commit() flash('Record was successfully added') return redirect(url_for('list_employees')) return render_template('add.html') if __name__ == '__main__': db.create_all() app.run(debug = True)
//list_employees <!DOCTYPE html> <html lang = "en"> <head><title>Home - Cairocoders</title></head> <body> <h3> <a href = "{{ url_for('list_employees') }}">Employee Management System</a> </h3> <h3>Employees List</h3> <table border="2" padding = "5"> <thead> <tr> <th>Name</th> <th>Salary</th> <th>Age</th> <th>Pin</th> </tr> </thead> <tbody> {% for employee in Employees %} <tr> <td>{{ employee.name }}</td> <td>{{ employee.salary }}</td> <td>{{ employee.age }}</td> <td>{{ employee.pin }}</td> </tr> {% endfor %} </tbody> </table> <br><br> <a href="{{ url_for('addEmployee') }}">Add New Employee</a> </body> </html>
//add.html <!DOCTYPE html> <html> <body> <h3>Add new Employee</h3> <hr/> {%- for category, message in get_flashed_messages(with_categories = true) %} <div class = "alert alert-danger"> {{ message }} </div> {%- endfor %} <form action = "{{ request.path }}" method = "post"> <label for = "name">Name</label><br> <input type = "text" name = "name" placeholder = "Name" /><br> <label for = "salary">Salary</label><br> <input type = "text" name = "salary" placeholder = "salary" /><br> <label for = "age">Age</label><br> <textarea name = "age" placeholder = "age"></textarea><br> <label for = "PIN">Pin</label><br> <input type = "text" name = "pin" placeholder = "pin" /><br> <input type = "submit" value = "Submit" /> </form> </body> </html>