Andrise programmeerimisalane WIKI
Andmetüübid
Property klass
Andmebaasitabeli mudeli defineerimisel tuleb igale väljale määrata kindel tüüp, mislaadi infot selles väljas hoida saab. Tüübist sõltub, kuidas andmebaas selle väärtusega ringi käib. Kas näiteks seda väärtust saab indekseerida või kui suurt väärtust saab üldse mahutada.
class Teade(db.Model): saatja = db.StringProperty()
Siin sai saatja enda tüübiks string klassi. See tähendab, et antud väli saab hoida teksti, mis on kuni 500 tähemärki pikk.
Kõik kasutatavad andmebaasi andmetüübid pärinevad samast Property klassist ning jagavad seetõttu mitmeid ühiseid omadusi, mida on võimalik kõikide eri tüüpide puhul seada. Näiteks võimaldab Property andmetüübi seadmisel kasutada parameetrit default, mis sisaldab välja vaikimisi sisu juhul kui kirje sisestamisel jäi see sisu täitmata.
saatja = db.StringProperty(default = "vaikimisi sisu")
Parameetriga required saab jälle märkida, et antud väljal peab kindlasti väärtus olema. Juhul kui kirje andmebaasi lisamisel antud väljal väärtus puudub, ilmub BadValueError tüüpi viga.
indexed määrab, kas antud välja on võimalik indekseerida või mitte. Juhul kui indexed väärtus on False, siis WHERE päringut tehes ei vasta väli ühelegi päringutingimusele.
Property tüübid
BlobPropertyandmetüüp hoiab endas binaarseid andmed, seda tüüpi tasub kasutada igasuguste failide hoidmise jaoks nagu näiteks pildid.BooleanPropertyväärtuseks saab olla kas tõene (True) või väär (False) (juhul kui see on seadmata, siis on väärtuseks nagu teistegi seadmata väljade puhulNull)DateTimePropertyväärtuseks on aegdatetime.datetimeformaadis. Võimalik on lisada kaks täiendavat vaikimisi väärtust -auto_now_addmis tähendab, et kirje lisamisel andmebaasi saab välja väärtuseks hetke aeg ningauto_now, mille puhul muudetakse välja väärtus alati hetke aja juurde, kui kirjet muudetakse.aeg = db.DateTimeProperty(auto_now_add=True)
FloatPropertyvõimaldab salvestada ujukomaga numbrit (float)IntegerPropertytäisarv (integer)ListPropertyGoogle App Engine spetsiifiline tüüp, mis võimaldab salvestada ühes väljas tervet massiivi ühetüübilisi väärtusi. Defineerimisel on kohustuslik kasutada parameetrititem_typemis määrab massiivi elementide tüübi.nimed = db.ListProperty(item_type = basestring) ... rida.nimed = ['Mati Maasikas', 'Peeter Meeter', 'Manfred Mesitalu']
ReferencePropertyon üks komplekssemaid andmetüüpe, kuna viitab teise rea juurde mõnes teises tabelis, sidudes mõlemad read kokku. KunaJOINlauseid pole võimalik kasutada, aitab justReferencePropertyvastavaid probleeme lahendada, kus on vaja erinevaid andmeid kokku linkida.JOINlause puhul tehakse seda lause täitmise käigus, agaReferenceProrpertyseatakse juba elemendi lisamisel baasi.class Autor(db.Model): nimi = StringProperty() class Jutt(db.Model): tekst = db.TextProperty() autor = db.ReferenceProperty(reference_class=Autor) jutt = Jutt.get(key) author_name = jutt.autor.nimi
SelfReferencePropertyon sama mis eelminegi, ainult kuiReferencePropertyviitas mõnele kirjele teises tabelis, siisSelfReferencePropertyviitab mõne kirje juurde samas tabelis kus ta isegi asub.StringListProperty, sama mis ListProperty, ainult et saab sisaldada endas ainult tekstilisi väärtusi, mitte suvalisi. Pole ka vajaitem_typeparameetriga eraldi välja tuua, et tegu on just stringidega.StringPropertysalvestab kuni 500 tähemärgilise teksti. See väli on indekseeritav.TextPropertysalvestab kuni 1 MB teksti, kuid erinevaltStringPropertytüübist ei saa seda välja indekseerida, mis tähendab et antud välja ei saa kasutadaWHEREtingimusena ega sorteerimise alusena.UserPropertyon Google App Engine spetsiifiline tüüp, mis salvestab Googlo Konto kasutaja andmed. Võimalik on kasutada sarnaselt ajatüübile paari täiendavat parameetrit vaikimis väärtuse seadmiseks.auto_current_userseab välja väärtuseks hetkel sisseloginud kasutaja iga kord kui välja muudetakse (sh. ka lisamisel) ningauto_current_user_addteeb sama kui väli lisatakse esmakordselt baasi.kasutaja = db.UserProperty(auto_current_user = True)
Kõikide võimalike andmetüüpide kohta saab lugeda Google App Engine dokumentatsioonist andmetüüpide lehelt.