#!/usr/bin/env python3 # coding: utf-8 """ dostęp do baz danych SQLite z poziomu Pythona prezentacja wyników za pośrednictwem pyplot-a potrzebne: NumPy + MatPlotLib """ import sqlite3 from matplotlib import pyplot from matplotlib.font_manager import FontProperties # wpisz nazwę pliku bazy danych baza = 'admPL.db' polaczenie = sqlite3.connect(baza) kursor = polaczenie.cursor() pytanie = """ select powiat as "powiat", count(distinct gminy.klgm) as "liczba gmin", count(1) as "liczba miejscowości" from miejscowosci join gminy on miejscowosci.klgm = gminy.klgm join powiaty on gminy.klpow = powiaty.klpow group by powiat order by powiat; """ kursor.execute(pytanie) # wyłuskać nazwy kolumn z odpowiedzi do listy naglowek naglowek = [] for i in range(len(kursor.description)): naglowek.append( kursor.description[i][0] ) odpowiedz = kursor.fetchall() kursor.close() polaczenie.close() opisy = FontProperties() opisy.set_family('DejaVu Sans') opisy.set_size(8) naglowki = FontProperties() naglowki.set_family('DejaVu Sans') naglowki.set_size(12) l = [] g = [] m = [] for wpis in odpowiedz: l.append(wpis[0]) print(l[-1]) g.append(wpis[1]) m.append(wpis[2]) pyplot.plot(g,m, 'o') pyplot.title('Powiaty województwa dolnośląskiego'.decode('utf-8'), fontproperties = naglowki) pyplot.xlabel('Liczba gmin', fontproperties = naglowki) pyplot.ylabel('Liczba miejscowości'.decode('utf-8'), fontproperties = naglowki) pyplot.axis([0, max(g)+1, 0, max(m)+50]) for i in range(len(g)): pyplot.text(g[i]+0.1, m[i], l[i], fontproperties = opisy) pyplot.show() del(odpowiedz)