article

Sunday, February 2, 2020

Flask SQLAlchemy


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>  

Related Post