|et

Teema 9: Andmebaas

Teoreetiline osa: SQLite Python’is

Mis on andmebaas?

  • Andmebaas on organiseeritud andmete kogum, mis võimaldab andmeid turvaliselt salvestada, muuta ja pärida.
  • Andmebaasid on mõeldud suure hulga struktureeritud andmete efektiivseks haldamiseks.

SQLite

  • SQLite on kerge ja manustatav (embedded) relatsiooniline andmebaas.
  • Ei vaja eraldi serverit, kogu andmebaas salvestatakse ühes failis.
  • Sobib hästi väiksematele rakendustele ja arenduseks, aga ka paljudele seadmetele ja süsteemidele.
  • On tasuta ja avatud lähtekoodiga.

SQLite ja Python

  • Pythonis saab SQLite’ga töötamiseks kasutada sisseehitatud sqlite3 moodulit.
  • See moodul võimaldab luua ühendusi andmebaasiga, täita SQL-päringuid ja hallata andmeid.
  • SQLite toetab standardseid SQL käsklusi.

Peamised tegevused sqlite3 mooduliga:

  1. Ühenduse loomine andmebaasiga
    • conn = sqlite3.connect('andmebaas.db')
    • Kui andmebaasi fail puudub, siis see luuakse automaatselt.
  2. Kursori loomine
    • cursor = conn.cursor()
    • Kursori kaudu täidetakse SQL-päringud.
  3. SQL-päringute täitmine
    • Tabeli loomine: cursor.execute("CREATE TABLE ...")
    • Andmete lisamine: cursor.execute("INSERT INTO ...")
    • Andmete pärimine: cursor.execute("SELECT ...")
  4. Andmete salvestamine
    • conn.commit() — muudatuste salvestamiseks andmebaasi.
  5. Ühenduse sulgemine
    • conn.close()

Näidis: töö SQLite andmebaasiga Pythonis




import sqlite3

# Ühenduse loomine andmebaasi failiga (näiteks 'andmebaas.db')
conn = sqlite3.connect('andmebaas.db')

# Kursori loomine
cursor = conn.cursor()

# Tabeli loomine (kui seda veel ei ole)
cursor.execute('''
    CREATE TABLE IF NOT EXISTS kasutajad (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        nimi TEXT NOT NULL,
        vanus INTEGER
    )
''')

# Andmete lisamine tabelisse
cursor.execute("INSERT INTO kasutajad (nimi, vanus) VALUES (?, ?)", ('Mari', 28))
cursor.execute("INSERT INTO kasutajad (nimi, vanus) VALUES (?, ?)", ('Jaan', 35))

# Muudatuste salvestamine
conn.commit()

# Andmete pärimine tabelist
cursor.execute("SELECT * FROM kasutajad")
andmed = cursor.fetchall()

# Andmete kuvamine
for rida in andmed:
    print(rida)

# Ühenduse sulgemine
conn.close()