Serve.py

Allikas: Lambda
#!/usr/bin/python

print "Content-type: text/html"
print

# Pane see programm kataloogi /home/kasutajanimi/public_html/cgi-bin
# ja ytle samas kasurealt
# chmod a+rx serve.py

# See programm laheb kaima, kui avad urli
# http://dijkstra.cs.ttu.ee/~kasutajanimi/cgi-bin/serve.py

# kasutame neid pythonisse sisse ehitatud standardteeke

import sqlite3
import json 
import cgi
import cgitb

# see annab debugimiseks arusaadavaid veateateid brauserile
cgitb.enable()

# sinu programm, mis pannakse paringu peale kaima

def getdata():
   	
  args = cgi.FieldStorage()
  # vaata, kas urlil anti key, op ja val parameetrid
  key=args.getvalue("key",'')
  op=args.getvalue("op",'')
  val=args.getvalue("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
  print(json.dumps(res))

# see paneb tegelikult programmi algul kaima:

getdata()