Servewithflask.py
Allikas: Lambda
# Kaimapanekuks kaivita hoopis runserver programm kasurealt
# See runserver kaivitab Flaski serveri ja ytleb, et kasutagu siinset programmi
# Brauserist katsetamiseks ava
# http://localhost:5000/getdata
# kasutame neid teeke: Flask tuleb eelnevalt installeerida,
# teised on pythonisse sisse ehitatud standardteegi osad
from flask import Flask, request
import sqlite3
import json
# nii tuleb Flaskile oelda
app = Flask(__name__)
# see jargmine rida ytleb, mis urli ja mis http meetodi
# jaoks jargmine programm kaivitub
@app.route('/getdata', methods=['POST', 'GET'])
# sinu programm, mis pannakse paringu peale kaima
def getdata():
# vaata, kas urlil anti key, op ja val parameetrid
key=request.args.get("key",'')
op=request.args.get("op",'')
val=request.args.get("val",'')
# vota baasiga yhendust, valmista ette paring
conn = sqlite3.connect('data.db')
cur = conn.cursor()
# hakka kokku panema paringu-sqli, alustades standardosast
sql="""select id,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10 from maintable """
# kui olid olemas key, op ja val, siis ehita where tingimus
if key and val:
if not op: # vaikimisi olgu op =
op = "="
# kontrollime, kas parameetrid ok
if (not (key in ["id","c1","c2","c3","c4","c5","c6","c7","c8","c9","c10"])
or
not (op in ["=","<",">","!="])):
# valed parameetrid, sulge yhendus
cur.close()
conn.close()
# anna veateade ja lopeta
return('"error"')
# siin koik ok
where = " where " + key + op + "?"
args = [val]
else:
where=""
args=None
# liida where tingimus sql standardosale
sql = sql + where
# liida sql lausele sorteering
sql = sql + " order by id asc"
# tryki debugimiseks sql lause ja args valja
print(sql,args)
# tee paring baasi
if args:
cur.execute(sql,args)
else:
cur.execute(sql)
# loe koik read sisse, mis paringuga klapivad
res=cur.fetchall()
# sulge yhendus
cur.close()
conn.close()
# teisenda saadud tulemus json formaati ja anna vastuseks
return json.dumps(res)
# see paneb tegelikult sinu serverirakenduse kaima,
# pordil 5000 ja igaltpoolt kattesaadav
app.run(debug=True, port=5000, host='0.0.0.0')