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

  • BlobProperty andmetüüp hoiab endas binaarseid andmed, seda tüüpi tasub kasutada igasuguste failide hoidmise jaoks nagu näiteks pildid.
  • BooleanProperty vää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 puhul Null)
  • DateTimeProperty väärtuseks on aeg datetime.datetime formaadis. Võimalik on lisada kaks täiendavat vaikimisi väärtust - auto_now_add mis tähendab, et kirje lisamisel andmebaasi saab välja väärtuseks hetke aeg ning auto_now, mille puhul muudetakse välja väärtus alati hetke aja juurde, kui kirjet muudetakse.
    • aeg = db.DateTimeProperty(auto_now_add=True)
  • FloatProperty võimaldab salvestada ujukomaga numbrit (float)
  • IntegerProperty täisarv (integer)
  • ListProperty Google App Engine spetsiifiline tüüp, mis võimaldab salvestada ühes väljas tervet massiivi ühetüübilisi väärtusi. Defineerimisel on kohustuslik kasutada parameetrit item_type mis määrab massiivi elementide tüübi.
    • nimed = db.ListProperty(item_type = basestring)
      ...
      rida.nimed = ['Mati Maasikas', 'Peeter Meeter', 'Manfred Mesitalu']
  • ReferenceProperty on üks komplekssemaid andmetüüpe, kuna viitab teise rea juurde mõnes teises tabelis, sidudes mõlemad read kokku. Kuna JOIN lauseid pole võimalik kasutada, aitab just ReferenceProperty vastavaid probleeme lahendada, kus on vaja erinevaid andmeid kokku linkida. JOIN lause puhul tehakse seda lause täitmise käigus, aga ReferenceProrperty seatakse 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
  • SelfReferenceProperty on sama mis eelminegi, ainult kui ReferenceProperty viitas mõnele kirjele teises tabelis, siis SelfReferenceProperty viitab 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 vaja item_type parameetriga eraldi välja tuua, et tegu on just stringidega.
  • StringProperty salvestab kuni 500 tähemärgilise teksti. See väli on indekseeritav.
  • TextProperty salvestab kuni 1 MB teksti, kuid erinevalt StringProperty tüübist ei saa seda välja indekseerida, mis tähendab et antud välja ei saa kasutada WHERE tingimusena ega sorteerimise alusena.
  • UserProperty on 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_user seab välja väärtuseks hetkel sisseloginud kasutaja iga kord kui välja muudetakse (sh. ka lisamisel) ning auto_current_user_add teeb 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.