SQLite: pagrindai (ir truputis pitono)

Posted: 2013-09-07 in Darbeliai
Žymos:,

SQLite | Darau, blėIki šiol kažkaip neteko su SQLite dirbti. Apskritai, dirbu tik su visokiom naglom duombazėm, kaip, pavyzdžiui, Oracle. Ir neseniai susipažinau su SQL Server — po penkiolikos metų pertraukos vėl teko paliesti Microsoft technologijas, ha ha.

Žodžiu, tiems, kam nelabai įdomu, tai ir neskaitykit, aš čia daugiau užsirašinėju ir darau savo smegenų kopijas, kad galėčiau greitai rasti prireikus.

Pirmas punktas. SQLite yra labai paprasta ir lengvasvorė duomenų bazė. Iš esmės tai vienas failas — ir jis yra visa viena reikalinga duomenų bazė. Jį galima persinešti kartu su programa ir nieko, be SQLite palaikymo, daugiau nereikia. Android OS naudoja šią duombazę kaip pagrindinę visokių parametrų saugojimo priemonę. Kadaise, kai SQLite dar nebuvo, aš labai nervinausi, kai prireikdavo programos su kažkokių duomenų bazės funkcionalumu.

SQLite man prireikė savo avietiniame serveryje. Pagalvojau, kad ten būtų galima užkurti MySQL ir persigalvojau. Kam tą mažą kompiuteriuką apkrauti tokiomis bjaurybėmis, kai mano poreikiai juokingai maži? Neverta.

Kitas gėris: kadangi mano darbiniame kompiuteryje sukasi Linux, o jis sukasi ir Avietėje, tai galiu sau visokius eksperimentus daryti net neprisijungęs prie Avietės, o vietoje kažką pakrapštyti, o paskui tiesiog perkelti. Gėris ir grožis. Tas pats ir su Flask serveriu. Kitaip sakant, atradau naują visokių programuotojiškų šūdniekių džiaugsmą.

Įdiegiame SQLite:

sudo apt-get install sqlite3

Suvažiuoja, kas reikia, ir pirmyn.

Prie savo bandomojo tinklapėlio šalimais padėsiu duomenų bazę, pavadintą “flask“:

sqlite3 flask.db

Ši komanda turėtų sukurti duomenų bazę. Juokinga, kad jeigu dabar nieko nepadaręs iš SQLite aplinkos išeisiu, failas “flask.db“ nebus sukurtas. Reikia sukurti lenteliukę pabandymui:

sqlite> create table temperatura (nr integer, laipsnis float, pavadinimas text, data text);

Sukūrė. Įdedam ten kokį nors duomenį:

sqlite> insert into temperatura values (1, 24.5, 'Kambarys', '2013-08-26 12:01:24');

Pabandom paimti tą duomenį ir pažiūrėti, ar viskas gerai:

sqlite> select * from temperatura;
1|24.5|Kambarys|2013-08-26 12:01:24

Veikia. Ok, dabar kitas žingsnis, pabandysiu išrankioti šiuos duomenukus su Python’u.

Beje, SQLite duomenų tipai yra tik keli ir labai paprasti: INTEGER sveikiems skaičiams, FLOAT skaičiams su slankiuoju kableliu, TEXT visokiems tekstams ir BLOB „žaliems“ bitukams. Datos tipo, tarkim, nėra. Tačiau yra funkcijos datos operacijoms. Na, tas manęs labai nejaudina.

Paprastas pavyzdukas su Python:

import sqlite3

# Čia jungiamės prie duomenų bazės-failo. Galima ir absoliutų kelią nurodyti,
# jei reikia.
conn = sqlite.connect('flask.db')
# Čia labai svarbu tinginiams, kad duomenų bazės įrašų stulpelius būtų galima
# pasiekti per žodyno raktą, pvz. row['id']. Be šito row_factory to nebūtų,
# tektų imti per tuplų indeksus.
conn.row_factory = sqlite3.Row

# Čia išsiimam kursorių, tokią duomenų bazės struktūrą, per kurią
# visaip terliojamės su duomenimis
c = conn.cursor()

# Čia įvykdom paprastutę užklausą, o rezultatą išspausdinam
# po vieną eilutę iteruodami per viską, ką gavom
c.execute('SELECT * FROM temperatura')
for r in c
    print r['id'], r['laipsnis'], r['data']

# Zia pabaiga.
conn.close()

Čia pavyzdukas labai jau paprastas, pirmam pasibandymui.

Parašykite komentarą

Įveskite savo duomenis žemiau arba prisijunkite per socialinį tinklą:

WordPress.com Logo

Jūs komentuojate naudodamiesi savo WordPress.com paskyra. Atsijungti /  Pakeisti )

Google photo

Jūs komentuojate naudodamiesi savo Google paskyra. Atsijungti /  Pakeisti )

Twitter picture

Jūs komentuojate naudodamiesi savo Twitter paskyra. Atsijungti /  Pakeisti )

Facebook photo

Jūs komentuojate naudodamiesi savo Facebook paskyra. Atsijungti /  Pakeisti )

Connecting to %s

Brukalų kiekiui sumažinti šis tinklalapis naudoja Akismet. Sužinokite, kaip apdorojami Jūsų komentarų duomenys.