# -*- coding: iso-8859-1 -*- from pysqlite2 import dbapi2 as sqlite import os import sys def index(req): req.content_type = "text/plain" con = sqlite.connect( os.path.join(os.path.dirname(req.filename), 'mallidb')) #oletusmerkistö on utf-8. jos tietokannassa on jotain muuta niin on laitettava #seuraava asetus päälle: con.text_factory = str cur = con.cursor() try: cur.execute(""" SELECT * FROM resepti """) except: req.write("nyt tuli virhe: %s" % sys.exc_info()[0]) req.write( str(cur.fetchall())+"\n") cur.execute(""" SELECT * FROM resepti WHERE nimi = 'Ananas Con Carne' """) req.write( str(cur.fetchall())+"\n") resepti1 = "Ananas Con Carne" #annettavien arvojen on oltava tuple siksi ylim , cur.execute(""" SELECT * FROM resepti WHERE nimi = ? """, (resepti1,)) req.write( str(cur.fetchall())+"\n") resepti2 = "Tiramisu" #annettavien arvojen on oltava tuple reseptit = (resepti1, resepti2) cur.execute(""" SELECT * FROM resepti WHERE nimi = ? OR nimi = ? """, reseptit) req.write( str(cur.fetchall())+"\n") reseptit = {"rese1":resepti1, "rese2":resepti2} cur.execute(""" SELECT * FROM resepti WHERE nimi = :rese1 OR nimi = :rese2 """, reseptit) for (nimi, kuvaus, hlomaara, id, tyyppi) in cur: req.write ('nimi:\t%s\n' % (nimi) ) req.write ('kuvaus:\t%s\n' % (kuvaus) ) req.write ('hlomaara:\t%s\n' % (hlomaara) ) req.write ('id:\t%s\n' % (id) ) req.write ('tyyppi:\t%s\n\n' % (tyyppi) ) req.write( "Samaa kursoria ei voi kayda lapi kahdesti vaan se on tyhja:\n" ) for rivi in cur: req.write ('nimi:\t%s\n' % (rivi[0]) ) req.write ('kuvaus:\t%s\n' % (rivi[1]) ) req.write ('hlomaara:\t%s\n' % (rivi[2]) ) req.write ('id:\t%s\n' % (rivi[3]) ) req.write ('tyyppi:\t%s\n\n' % (rivi[4]) ) req.write( "Uuden executen jalkeen onnistuu mutta parempi ottaa heti ekalla kerralla talteen mita tarvitsee:\n" ) cur.execute(""" SELECT * FROM resepti WHERE nimi = :rese1 OR nimi = :rese2 """, reseptit) for rivi in cur: req.write ('nimi:\t%s\n' % (rivi[0]) ) req.write ('kuvaus:\t%s\n' % (rivi[1]) ) req.write ('hlomaara:\t%s\n' % (rivi[2]) ) req.write ('id:\t%s\n' % (rivi[3]) ) req.write ('tyyppi:\t%s\n\n' % (rivi[4]) ) req.write( "------\n" ) con.row_factory = sqlite.Row # con.isolation_level = None cur = con.cursor() cur.execute(""" SELECT * FROM resepti """) for rivi in cur: for i in rivi.keys(): req.write ('%s:\t%s\n' % (i, rivi[i]) ) req.write ("-----------------\n"); cur.execute(""" SELECT * FROM resepti """) for rivi in cur: req.write ('Nimi:\t%s\n' % (rivi['Nimi']) ) req.write ('Kuvaus:\t%s\n' % (rivi['Kuvaus']) ) req.write ('Henkilomaara:\t%s\n' % (rivi['Henkilomaara']) ) req.write ('ReseptiID:\t%s\n' % (rivi['ReseptiID']) ) req.write ('RuokalajiID:\t%s\n' % (rivi['RuokalajiID']) ) #transaktiot # req.write("Transaktiot\n") try: cur.execute(""" INSERT INTO Resepti (Nimi, Kuvaus, Henkilomaara, RuokalajiID) VALUES (:nimi, :kuvaus, :henkilomaara, :ruokalajiID ) """, {"nimi":"Talkkunahyve", "kuvaus":"perinteinen jälkkäri", "henkilomaara":4,"ruokalajiID":7}) except: req.write("nyt tuli virhe: %s" % sys.exc_info()[0] + "\n") req.write("Lisääminen epäonnistui\n") reseptiID = cur.lastrowid # reseptiID = "9" req.write ( str(reseptiID) + "\n" ) try: cur.execute(""" UPDATE Resepti SET Nimi = 'Puolukkahyve' WHERE ReseptiID = ? """, (reseptiID,)) except: req.write("nyt tuli virhe: %s" % sys.exc_info()[0] + "\n") req.write("Päivittäminen epäonnistui\n") try: cur.execute(""" DELETE From Resepti WHERE ReseptiID = :id """, {"id":reseptiID} ) except: req.write("nyt tuli virhe: %s" % sys.exc_info()[0] + "\n") req.write("Poistaminen epäonnistui\n") #ilman tätä muutokset eivät jää voimaan! con.commit() req.write("Transaktio loppuu\n") try: cur.execute(""" SELECT last_insert_rowid() """) except: req.write( "epäonnistui" ) avain = cur.fetchone() req.write( str(avain[0]) + "\n" ) cur.execute(""" SELECT Nimi FROM resepti """) for rivi in cur: req.write ('%s\n' % (rivi["Nimi"]) ) #yhteys pitää lopuksi sulkea #poikkeuksena tilanteet joissa samaa yhteyttä jaetaan con.close() return ""