Facebook
From kamil lesnik i daniel maja dziec, 1 Month ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 139
  1. import sqlite3
  2.  
  3. con = sqlite3.connect('firma.db')
  4.  
  5. # dostęp do kolumn przez indeksy i przez nazwy
  6. con.row_factory = sqlite3.Row
  7.  
  8. cur = con.cursor()
  9.  
  10. cur.execute("DROP TABLE IF EXISTS pracownicy;")
  11.  
  12. cur.execute("""
  13.     CREATE TABLE IF NOT EXISTS pracownicy(
  14.     id INTEGER PRIMARY KEY ASC,
  15.     imie varchar(50),
  16.     nazwisko varchar(70)
  17.     )
  18.     """)
  19.    
  20. cur.executescript("""
  21.     DROP TABLE IF EXISTS telefony;
  22.     CREATE TABLE IF NOT EXISTS telefony (
  23.         nr_tel varchar(20) PRIMARY KEY,
  24.         opis varchar(250),
  25.         pracownicy_id INTEGER,
  26.         FOREIGN KEY(pracownicy_id) REFERENCES pracownicy(id)
  27.     )
  28.     """)
  29.    
  30. cur.execute('INSERT INTO pracownicy VALUES(NULL, ?, ?);', ('Jan', 'Kowalski'))
  31. cur.execute('INSERT INTO pracownicy VALUES(NULL, ?, ?);', ('Adam', 'Nowak'))
  32. cur.execute('INSERT INTO pracownicy VALUES(NULL, ?, ?);', ('Ola', 'Wiosna'))
  33.  
  34. cur.execute('SELECT id FROM pracownicy WHERE imie = ?', ('Jan',))
  35. pracownicy_id = cur.fetchone()[0]
  36.  
  37.  
  38. telefon = (
  39.     ('500301880', 'komórka', pracownicy_id),
  40.     ('23567899', 'stacjonarny', pracownicy_id)
  41. )
  42.  
  43. cur.executemany('INSERT INTO telefony VALUES(?,?,?)', telefon)
  44.  
  45. def czytajdane():
  46.     """Funkcja pobiera i wyświetla dane z bazy."""
  47.    
  48.     cur.execute('SELECT * from pracownicy')
  49.     pracownik = cur.fetchall()
  50.     for prac in pracownik:
  51.         print(prac['id'], prac['imie'], prac['nazwisko'])
  52.     print()
  53.    
  54.     cur.execute(
  55.         """
  56.         SELECT nr_tel, nazwisko FROM pracownicy,telefony
  57.         WHERE pracownicy.id=telefony.pracownicy_id
  58.         """)
  59.     telefon = cur.fetchall()
  60.     for tel in telefon:
  61.         print(tel['nr_tel'], tel['nazwisko'])
  62.     print()
  63.    
  64. czytajdane()
  65. cur.execute('SELECT id FROM pracownicy WHERE nazwisko= ?', ('Nowak',))
  66. pracownicy_id = cur.fetchone()[0]
  67. cur.execute('UPDATE telefony SET pracownicy_id=? WHERE nr_tel=?', (pracownicy_id, '500301880'))
  68.  
  69. cur.execute('DELETE FROM pracownicy WHERE id=?', (3,))
  70. con.commit()
  71.  
  72. czytajdane()
  73.  
  74. con.close()