SQLite Airline
Airline Version 1:CREATE
LOOP:
SELECT (display)
INSERT
END LOOP
airline_v1.py
import sqlite3
from flask import *
app = Flask(__name__)
################################## CREATE AIRLINE DATABASE ##########
db = sqlite3.connect("airline.db")
db.cursor().executescript("""
CREATE TABLE IF NOT EXISTS passengers (
seat TEXT PRIMARY KEY UNIQUE NOT NULL,
name TEXT
);
INSERT OR IGNORE INTO passengers (seat, name) VALUES ('A1','Martha');
INSERT OR IGNORE INTO passengers (seat, name) VALUES ('A2','Glenn');
""")
db.commit()
db.close()
######################################################################
display_passengers_html = """
{% for each_passenger_tuple in passenger_list %}
SEAT: <mark>{{each_passenger_tuple[0]}}</mark>,<br>
PASSENGER NAME: <mark>{{each_passenger_tuple[1]}}</mark><br>
<hr>
{% endfor %}
<br>
"""
add_new_passenger_html = """
<form action='/addpassenger' method='POST'>
SEAT: <input type='text' name='seat'><br>
PASSENGER NAME: <input type='text' name='name'><br>
<input type='submit'>
</form>
"""
@app.route("/addpassenger", methods=["POST"])
def insert():
seat = request.form["seat"]
name = request.form["name"]
db = sqlite3.connect("airline.db")
db.cursor().execute("INSERT OR IGNORE INTO passengers (seat, name) VALUES (?,?)",(seat,name))
db.commit()
db.close()
return redirect("/")
@app.route("/")
def main():
db = sqlite3.connect("airline.db")
records = db.cursor().execute("SELECT * FROM passengers").fetchall()
db.close()
html = display_passengers_html + add_new_passenger_html
return render_template_string(html, passenger_list = records)
app.run(debug = True)
Airline Version 2:CREATE
LOOP:
SELECT (display)
INSERT
UPDATE
DELETE
END LOOP
airline_v2.py
import sqlite3
from flask import *
app = Flask(__name__)
################################## CREATE AIRLINE DATABASE ##########
db = sqlite3.connect("airline.db")
db.cursor().executescript("""
CREATE TABLE IF NOT EXISTS passengers (
seat TEXT PRIMARY KEY UNIQUE NOT NULL,
name TEXT
);
INSERT OR IGNORE INTO passengers (seat, name) VALUES ('A1','Martha');
INSERT OR IGNORE INTO passengers (seat, name) VALUES ('A2','Glenn');
""")
db.commit()
db.close()
######################################################################
display_passengers_html = """
{% for each_passenger_tuple in passenger_list %}
SEAT: <mark>{{each_passenger_tuple[0]}}</mark>,<br>
PASSENGER NAME: <mark>{{each_passenger_tuple[1]}}</mark><br>
<a href='/delete?seat={{each_passenger_tuple[0]}}'>delete</a><br>
<a href='/update?seat={{each_passenger_tuple[0]}}'>update</a><br>
<hr>
{% endfor %}
<br>
"""
add_new_passenger_html = """
<form action='/addpassenger' method='POST'>
SEAT: <input type='text' name='seat'><br>
PASSENGER NAME: <input type='text' name='name'><br>
<input type='submit'>
</form>
"""
update_existing_passenger_html = """
<form action='/updatepassenger' method='POST'>
<input type='hidden' name='originalseat' value={{os}}>
SEAT: <input type='text' name='newseat' value={{ns}}><br>
PASSENGER NAME: <input type='text' name='name' value={{n}}><br>
<input type='submit'>
</form>
"""
@app.route("/update", methods=["GET"])
def update_step1_view_existing():
seat = request.args.get("seat")
db = sqlite3.connect("airline.db")
filter_by_seat_sql = "SELECT * FROM passengers WHERE seat = ?"
record = db.cursor().execute(filter_by_seat_sql,(seat,)).fetchone()
print(record)
os = record[0] #os = original seat (unchangeable - hidden field)
ns = record[0] #ns = new seat (initially original seat)
n = record[1] #n = name
db.close()
return render_template_string(update_existing_passenger_html, os=os, ns=ns, n=n)
@app.route("/updatepassenger", methods=["POST"])
def update_step2_commit_changes():
originalseat = request.form["originalseat"]
newseat = request.form["newseat"]
name = request.form["name"]
db = sqlite3.connect("airline.db")
update_query_sql = """
UPDATE passengers
SET seat = ?, name = ?
WHERE seat = ?;
"""
db.cursor().execute(update_query_sql,(newseat,name,originalseat))
db.commit()
db.close()
return redirect("/")
@app.route("/addpassenger", methods=["POST"]) #POST values submitted via form
def insert():
seat = request.form["seat"]
name = request.form["name"]
db = sqlite3.connect("airline.db")
db.cursor().execute("INSERT OR IGNORE INTO passengers (seat, name) VALUES (?,?)",(seat,name))
db.commit()
db.close()
return redirect("/")
@app.route("/delete", methods=["GET"]) #GET value of seat from URL ?seat=...
def remove():
seat = request.args.get("seat")
db = sqlite3.connect("airline.db")
db.cursor().execute("DELETE FROM passengers WHERE seat == ?",(seat,))
db.commit()
db.close()
return redirect("/")
@app.route("/")
def main():
db = sqlite3.connect("airline.db")
records = db.cursor().execute("SELECT * FROM passengers").fetchall()
db.close()
html = display_passengers_html + add_new_passenger_html
return render_template_string(html, passenger_list = records)
app.run(debug = True)