Server-Side Scripting/Key-Value Databases/Python (Flask)
Appearance
app.py
[edit | edit source]# This program creates and displays a temperature database
# with options to insert, update, and delete records.
#
# Assumes Redis is installed locally. If you have Redis running
# separately (such as in a Docker container), replace localhost below
# with your Redis server's IP address.
#
# References:
# https://en.wikibooks.org/wiki/Python_Programming
# https://realpython.com/python-redis/
import flask
import redis as redis_lib
app = flask.Flask(__name__)
HOST = "localhost"
DATABASE = 0
FORM = """
<h1>Temperature Data Entry</h1>
<p>Enter country and temperature. Enter again to update.</p>
<p>Enter country without temperature to delete.</p>
<form method="POST">
<p><label for="country">Country:</label>
<input type="text" id="country" name="country" required></p>
<p><label for="stop">Temperature:</label>
<input type="text" id="temperature" name="temperature"></p>
<p><input type="submit" name="submit" value="Submit"></p>
</form>
<hr>
"""
@app.route('/', methods=["GET"])
def root_get():
try:
return FORM + get_data()
except Exception as exception:
return exception
@app.route('/', methods=["POST"])
def root_post():
try:
country = flask.request.form["country"].strip()
temperature = flask.request.form["temperature"].strip()
if not country_exists(country):
insert_country(country, temperature)
elif temperature != "":
update_country(country, temperature)
else:
delete_country(country)
return FORM + get_data()
except Exception as exception:
return exception
def get_data():
redis = redis_lib.Redis(host=HOST, db=DATABASE)
result = "<table><tr><th>Country</th>"
result += "<th>Temperature</th></tr>"
countries = redis.keys()
countries.sort()
for country in countries:
temperature = redis.get(country)
result += f"<tr><td>{country.decode()}</td>"
result += f"<td>{temperature.decode()}</td></tr>"
result += "</table>"
return result
def country_exists(country):
redis = redis_lib.Redis(host=HOST, db=DATABASE)
return bool(redis.exists(country))
def insert_country(country, temperature):
redis = redis_lib.Redis(host=HOST, db=DATABASE)
redis.set(country, temperature)
def update_country(country, temperature):
redis = redis_lib.Redis(host=HOST, db=DATABASE)
redis.set(country, temperature)
def delete_country(country):
redis = redis_lib.Redis(host=HOST, db=DATABASE)
redis.delete(country)
if __name__ == "__main__":
app.run(host='0.0.0.0', port=5000)
Try It
[edit | edit source]- Use Docker/Redis to run a Redis server.
- Use Docker/Flask and copy and paste the code above to run as the Flask application. Be sure to modify the Redis host address to match the address received by your Redis server.