Andmebaasirakendus Zope serveris

 

            Kui tahta rakendust Zope poolt pakutava kasutajaliidese abil tööle panna, tuleb kõigepealt Zope server käivitada. Kes kasutavad mujal administreeritavat serverit, näiteks toda vabalt pruukida lubatud vahendit, mis asub aadressil http://www.freezope.org , ei pea käivitamisega vaeva nägema. Windowsi masinasse installeerituna tuleb leida installeerimiskataloogist fail start.bat ning see käivitada. Sõltuvalt masina töökiirusest võib ooteaeg erineda, kuid kui kõik korda läheb, siis võib mõneteistkümne sekundi kuni mõne minuti pärast lugeda ekraanilt teadet, millises väratis veebiserver jookseb.

 

 

Edasi tuleb avada seilur ning aadressireale tippida URL, kus lehti hallata peaks saama. Vaikimisi paigalduse korral on selleks http://localhost:8080/manage . Avaneb meldimisaken nime ja parooli sisestamiseks. Sisse peaks saama nii esialgu administraatoriks määratu kui hiljem loodud kasutajad. Haldurile avaneb serveri virtuaalne juurkataloog.

 

 

 

 

 

Baasirakenduse jaoks loome eraldi kataloogi, siis ei lähe loodud failid muudega segamini ning soovi korral on tulemus kergem mujale eksportida. Nagu pildilt näha, tuleb lisamistüübiks valida Folder. Kausta nime küsimisel on selleks pakutud inimbaas.

 

 

 

Kui loomine õnnestus, tekib kataloogi ikoon ning nimi juurkataloogi. Sellele vajutamisel jõutakse loodud tühja kataloogi.

 

 

 

 

 

 

Andmebaasirakenduse kõige tähtsam osa on ühendus andmebaasiga. Seletuste kohaselt on võimalik leida draivereid ühendumiseks mitmesuguste baasidega MySQList Oracle'ni välja. Testimiseks aga sobib Zope sisse ehitatud lihtne Z Gadfly nimeline baas. Baasiühendusele tuleb anda nimi, et pärast oleks võimalik selle poole pöörduda.

 

Tegevuse õnnestumise järel leiame kataloogist baasiühendust kajastava elemendi. Sellele vajutades võib näha teadet ühenduse avatuse kohta. Samuti võib proovida ühendust sulgeda ning taas avada.

 

 

 

Vajutades lipikule Test, avatakse aken, kus on võimalik baasile otse käsklusi anda ning ka nende tulemusi vaadata. Esialgu on tegemist tühja baasiga, andmete sisestamiseks tuleb kõigepealt tabelid luua. SQL-käsklus tuleb sisse tippida/kopeerida ning Submit Query määrab selle täitmisele. Lihtsa tabeli loomiseks kus vaid nimed ja sünniaastad piisab järgnevast lausest:

 

create table inimesed(nimi varchar, synniaasta integer)

 

Tüüp varchar tähistab teksti, integer täisarvu. Nii määratakse, et sünniaasta peab olema numbritega kirja pandud.Pärast sisestusnupule vajutamist suunatakse meid järgmisele lehele, kus näidatakse nii käsku kui selle töö väljundit. Tabeliloomise käsu peale teatatakse, et "This statement returned no results". Tabel loodi baasi ära. Kuna create table käsuga väärtusi küsida ei saa, siis tähendabki see, et kellegi nimesid ega muid andmeid pole näidata.

 

 

 

Järgnevalt lisame testiks ühe inimese. Lisamislauseks on

 

insert into inimesed (nimi, synniaasta) values ('Siim', 1975)

 

Jällegi paistab, et toiming õnnestus. Nüüd tasuks kontrollida, kas tabel ka tegelikult olemas ja nimi selle sees on. Selleks sobib lause

 

select * from inimesed

 

Enam ei teatata vastuste puudumisest, vaid sellele kohale on ilmunud  tabel, kus on näha nii tulpade nimed kui nendes paiknevad väärtused.

 

 

 

Siin kasutatud aken on vaid testiks ja ühekordsete lausete - nagu tabeli loomine - sisestamiseks. Veebirakenduse põhitöö ajaks on mõeldud eraldi element nimega Z SQL Method. Selle saab lisada nagu tavalise kataloogi, veebilehe või muu elemendi. Sealne käsukeel näeb küllaltki välja SQL-i moodi, kuid parameetrite väärtused tuleb sisse panna dtml-sqlvar käskude abil. Samuti saab määrata andmete tüübi, nii et pole karta, et segadusse sattunud või pahatahtlik kasutaja saaks hakata sobimatut tüüpi andmeid baasi suruma. Valesid andmeid see koht kontrollida ei suuda, aga kogu turvamine koosnebki väikestest osadest. Nime ja sünniaasta lisamise käsklus näeb välja järgmine.

 

insert into inimesed(nimi, synniaasta) values(
 <dtml-sqlvar nimi type=string>,
 <dtml-sqlvar synniaasta type=int>
)

 

Nagu pildi pealt näha, tuleb sisestatavad argumendid määrata eraldi tekstiväljas, et oleks hiljem keskkonnal selgelt teada, millised andmed tuleb selle päringu käivitamiseks kasutajalt või teiselt programmilt küsida. Tegemist on sarnase vahendiga nagu mõne andmebaasi küljes on salvestatud protseduur (stored procedure), mis on loodud kindla toimingu täitmiseks.

 

 

 

 

Vajutades käskluse puhul pärast salvestamist lipikule test küsitaksegi andmeid ning Submit nupu peale lükatakse koodilõik tööle. Kuna taas on tegemist lisamisega, siis eraldi väljundtabelit ei pakuta, lihtsalt teatatakse, et töö õnnestus.

 

 

Test-lipik - nagu nimigi ütleb - on vaid protseduuri testimiseks. Tegelikuks kasutamiseks tuleb luua veebivorm, kuhu inimene saaks mugavamalt oma andmed kirja panna. Vormi loomiseks sobib DTML meetod. Siin sai sellele nimeks antud lisamisvorm.

 

 

 

Vorm nagu vorm ikka. Alguses ja lõpus standardne päis ja jalus, keskele tuleb teatada, milliseid andmeid küsitakse ning kuhu nad peavad jõudma. Siin on määratud, et andmeid vastu võtva lehe nimi on lisamisleht.

 

<dtml-var standard_html_header>
  <form action="lisamisleht">
    Eesnimi: <input type="text" name="nimi" /><br />
    Sünniaasta: <input type="text" name="synniaasta" /><br />
    <input type="submit" value=" Lisa " />
  </form>
<dtml-var standard_html_footer>

 

Lisamislehe ainukeseks ülesandeks on püüda inimese poolt saadetud andmed kinni ning saata need loodud SQL-skriptile lisainimene. Vormi elementide väärtuste püüdmiseks sobib struktuur nimega REQUEST.

 

<dtml-var standard_html_header>
<dtml-call expr="lisainimene(nimi=REQUEST['nimi'],
synniaasta=REQUEST['synniaasta'])">
Nimi lisatud
<dtml-var standard_html_footer>

 

 

 

 

 

Lisamise pool peaks nüüd töötama. Iseenesest annab seda ka juba testida, avades vormi vaateaknas ning jälgida pärast testkäskudega, kas andmed on baasi kohale jõudnud. Siin aga tehakse eraldi SQL-meetod ning veebileht andmete vaatamiseks.

 

 

 

 

Meetodi puhul piisab lihtsast küsimisest lausega

 

select * from inimesed

 

Sellel meetodil pole argumente, sest kui meile antakse alati kogu inimeste tabeli sisu, siis pole vaja eraldi märkida kellegi andmeid. Seetõttu tuleb testimisel teade "This query requires no input" ning nupuvajutuse tulemusena võime päringu töö tulemust näha.

 

 

Et tulemust saaks vaadata enese kujundatud veebilehe kaudu, tuleb ka selline leht valmis teha. Lehe tüübiks tuleb DTML method ning sisuks

 

<dtml-var standard_html_header>
<table>
  <tr><td>Eesnimi</td><td>Sünniaasta</td></tr>
  <dtml-in kysiinimesed>
    <tr><td><dtml-var nimi></td><td><dtml-var synniaasta></td></tr>
  </dtml-in>
</table>
<dtml-var standard_html_footer>

 

Iseenesest võib maagiline paista, et ilma SQL-käsklusteta on võimalik terve tabeli sisu lehele manada. Mõningase uurimise järele paistab, et andmed peavad tulema eelnevalt loodud päringust nimega küsiinimesed. Käsklus <dtml-in> on tsükkel mis käib läbi kollektsiooni kõik elemendid ehk praegusel juhul meie päringu kõik read, lubades oma sees igal korral kasutada sees pakutavaid väärtusi. Iga rea puhul tähistab <dtml-var nimi> just konkreetse inimese nime.

 

 

 

 

 

Nüüd piisab lehte vaid view-alt või otse URL-ile aadressi tippides vaadata ning näha võib, et lisatud nimed ongi baasist näha.

            Lisamine ja vaatamine kipuvad aga täiesti eraldi tükid olema. Kasutaja, kes juhtub lisamise lehele sattuma, ei tea midagi vaatamislehest ega vastupidi. Viga annab lihtsalt parandada, lisades vaatamislehele viite <a href="lisamisvorm">Lisa inimene</a> .

 

 

Selle peale ongi ühendus loodud. Võib vajutada viitele ning asuda uut nime lisama.