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')