import sqlite3 con = sqlite3.connect('firma.db') # dostęp do kolumn przez indeksy i przez nazwy con.row_factory = sqlite3.Row cur = con.cursor() cur.execute("DROP TABLE IF EXISTS pracownicy;") cur.execute(""" CREATE TABLE IF NOT EXISTS pracownicy( id INTEGER PRIMARY KEY ASC, imie varchar(50), nazwisko varchar(70) ) """) cur.executescript(""" DROP TABLE IF EXISTS telefony; CREATE TABLE IF NOT EXISTS telefony ( nr_tel varchar(20) PRIMARY KEY, opis varchar(250), pracownicy_id INTEGER, FOREIGN KEY(pracownicy_id) REFERENCES pracownicy(id) ) """) cur.execute('INSERT INTO pracownicy VALUES(NULL, ?, ?);', ('Jan', 'Kowalski')) cur.execute('INSERT INTO pracownicy VALUES(NULL, ?, ?);', ('Adam', 'Nowak')) cur.execute('INSERT INTO pracownicy VALUES(NULL, ?, ?);', ('Ola', 'Wiosna')) cur.execute('SELECT id FROM pracownicy WHERE imie = ?', ('Jan',)) pracownicy_id = cur.fetchone()[0] telefon = ( ('500301880', 'komórka', pracownicy_id), ('23567899', 'stacjonarny', pracownicy_id) ) cur.executemany('INSERT INTO telefony VALUES(?,?,?)', telefon) def czytajdane(): """Funkcja pobiera i wyświetla dane z bazy.""" cur.execute('SELECT * from pracownicy') pracownik = cur.fetchall() for prac in pracownik: print(prac['id'], prac['imie'], prac['nazwisko']) print() cur.execute( """ SELECT nr_tel, nazwisko FROM pracownicy,telefony WHERE pracownicy.id=telefony.pracownicy_id """) telefon = cur.fetchall() for tel in telefon: print(tel['nr_tel'], tel['nazwisko']) print() czytajdane() cur.execute('SELECT id FROM pracownicy WHERE nazwisko= ?', ('Nowak',)) pracownicy_id = cur.fetchone()[0] cur.execute('UPDATE telefony SET pracownicy_id=? WHERE nr_tel=?', (pracownicy_id, '500301880')) cur.execute('DELETE FROM pracownicy WHERE id=?', (3,)) con.commit() czytajdane() con.close()