Kurs rozszerzony języka Python

Podobne dokumenty
Zaawansowany kurs języka Python

Zaawansowany kurs języka Python

Programowanie w Ruby

Definicja. Not Only SQL

Technologia informacyjna

Programowanie w Ruby

Zaawansowany kurs języka Python

Zaawansowany kurs języka Python

Przetwarzanie danych z wykorzystaniem technologii NoSQL na przykładzie serwisu Serp24

Programowanie w Ruby

Programowanie obiektowe

Język SQL, zajęcia nr 1

MongoDB. wprowadzenie. dr inż. Paweł Boiński, Politechnika Poznańska

Obiektowość BD Powtórka Czas odpowiedzi. Bazy Danych i Systemy informacyjne Wykład 14. Piotr Syga

Architektura rozproszonych magazynów danych

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

SQL 4 Structured Query Lenguage

Informatyka I BAZY DANYCH. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2017

Informatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC.

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Dostęp do baz danych z serwisu www - PHP. Wydział Fizyki i Informatyki Stosowanej Joanna Paszkowska, 4 rok FK

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

Założenia do ćwiczeń: SQL Server UWM Express Edition: \SQLEXPRESS. Zapoznaj się ze sposobami użycia narzędzia T SQL z wiersza poleceń.

Wykład 5: PHP: praca z bazą danych MySQL

Hurtownie danych wykład 5

Bazy Danych i Usługi Sieciowe

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Podstawy programowania III WYKŁAD 2

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

BAZY DANYCH. Obsługa bazy z poziomu języka PHP. opracowanie: Michał Lech

Sprzeg podstawowy do baz danych w PHP Mateusz Sowa, 2007

Systemy internetowe. Wykład 4 mysql. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

CouchDB. Michał Nowikowski

Bazy danych i usługi sieciowe

Nowe technologie baz danych

Kurs języka Python Wykład 6. Pliki tekstowe Pliki rekordów Pliki CSV Strumienie

Programowanie w języku Java. Bazy danych SQLite w Javie

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Metody dostępu do danych

Bazy danych - wykład wstępny

Database Connectivity

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3

Podstawowe informacje o bazach danych. Technologie Informacyjne

Wprowadzenie. Rozdział 23 PDO. Podstawowe kroki aplikacji. Źródło danych

NoSQL Not Only SQL, CouchDB. I.Wojnicki, NoSQL. Apache CouchDB has started. Time to relax. Igor Wojnicki

Specyfikacja API Runtime BAS 3.0

Hbase, Hive i BigSQL

Zaawansowane aplikacje WWW - laboratorium

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

NoSQL & relax with CouchDB

Instalacja MySQL.

Programowanie obiektowe

znaleźć wszystkie rekordy dotyczące adresów przy ulicy Hożej (dowolnego miasta!);

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

PLNOG#10 Hadoop w akcji: analiza logów 1

Administracja bazami danych

Wykład I. Wprowadzenie do baz danych

NARZĘDZIA WIZUALIZACJI

Programowanie obiektowe

Paweł Rajba

PHP: bazy danych, SQL, AJAX i JSON

Baza danych. Modele danych

JAVA I BAZY DANYCH. MATERIAŁY:

Kurs języka Python Wykład 8. Przetwarzanie tekstu Wyrażenia regularne Biblioteka urllib Parsowanie html'a XML

Internetowe bazy danych

WPROWADZENIE DO BAZ DANYCH

Paweł Cieśla. Dokumentacja projektu

Trigger jest obiektem związanym z tablicą, który aktywuje się gdy do tablicy następuje odpowiednie zapytanie.

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca Norbert Potocki db4o

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

(Apache) CouchDB. Krzysztof Kulewski 2008

Aplikacje WWW - laboratorium

ROZSZERZAJĄC FUNKCJONALNOŚCI MEMCACHED

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Wykład 05 Bazy danych

Bazy danych i usługi sieciowe

Języki skryptowe - PHP. PHP i bazy danych. Paweł Kasprowski. pawel@kasprowski.pl. vl07

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

akademia androida Składowanie danych część VI

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Model semistrukturalny

Multi-projekt z przedmiotów Inżynieria oprogramowania, Współczesne bazy danych i Programowanie w języku Java

Sprawdzenie czy połączenie przebiegło poprawnie if (mysqli_connect_errno()) { echo Błąd; Połączenie z bazą danych nie powiodło się.

Zagadnienia. Konstrukcja bibliotek mysql i mysqli w PHP. Dynamiczne generowanie stron. Połączenie, zapytanie i sesja

(kod ten służy wprowadzeniu definicji mediany, nie jest to optymalna ani nawet szczególnie dobra implementacja obliczania mediany w praktyce!

Projektowanie rozwiązań Big Data z wykorzystaniem Apache Hadoop & Family

Organizacyjnie. Prowadzący: dr Mariusz Rafało (hasło: BIG)

Administracja i programowanie pod Microsoft SQL Server 2000

Tworzenie aplikacji bazodanowych

Wprowadzenie do NoSql. Maksymilian Wiesiołek

Baza danych sql. 1. Wprowadzenie. 2. Repozytaria generyczne

Aplikacje WWW - laboratorium

SYSTEM MONITORINGU PARAMETRÓW WĘZŁÓW PRZECHOWYWANIA DANYCH DLA PROJEKTU KRAJOWY MAGAZYN DANYCH PODRĘCZNIK DEWELOPERA

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

SIECI KOMPUTEROWE I BAZY DANYCH

Transkrypt:

GTK+, cd 1 grudnia 2017

Plan wykładu 1 Wątki w GTK+ Zadania okresowe Prawdziwe wątki GNOME 2 Systemy zorientowane na dokumenty Grafowe bazy danych Bazy typu klucz wartość

Wątki w GTK+ GNOME Plan wykładu 1 Wątki w GTK+ Zadania okresowe Prawdziwe wątki GNOME 2 Systemy zorientowane na dokumenty Grafowe bazy danych Bazy typu klucz wartość

Wątki w GTK+ GNOME Timeouty Uruchamianie zadań okresowych: id = gobject.timeout add(milisec, heart beat,...)

Wątki w GTK+ GNOME Timeouty Uruchamianie zadań okresowych: id = gobject.timeout add(milisec, heart beat,...) Funkcja heart beat powinna zwrócić True, w przeciwnym przypadku nie będzie dalej powtarzana.

Wątki w GTK+ GNOME Timeouty Uruchamianie zadań okresowych: id = gobject.timeout add(milisec, heart beat,...) Funkcja heart beat powinna zwrócić True, w przeciwnym przypadku nie będzie dalej powtarzana. Wyłączenie zadania gobject.source remove(id)

Wątki w GTK+ GNOME Funkcje idle Co program robi jak nic nie robi?

Wątki w GTK+ GNOME Implementacja funkcji Uruchamianie zadań gdy nic się nie dzieje: id = gobject.idle add(milisec, heart beat,...)

Wątki w GTK+ GNOME Implementacja funkcji Uruchamianie zadań gdy nic się nie dzieje: id = gobject.idle add(milisec, heart beat,...) Funkcja heart beat powinna zwrócić True, w przeciwnym przypadku nie będzie dalej powtarzana.

Wątki w GTK+ GNOME Implementacja funkcji Uruchamianie zadań gdy nic się nie dzieje: id = gobject.idle add(milisec, heart beat,...) Funkcja heart beat powinna zwrócić True, w przeciwnym przypadku nie będzie dalej powtarzana. Wyłączenie zadania gobject.source remove(id)

Wątki w GTK+ GNOME Monitorowanie we/wy Można kontrolować otwarte pliki (w tym pliki związane z sieciami, gniazdami czy potokami). Co możemy monitorować (warunki) gobject.io IN są dane gotowe do odczytu gobject.io OUT plik jest gotów do zapisu gobject.io PRI są pilne dane do odczytu gobject.io ERR błąd gobject.io HUP zerwanie połączenia

Wątki w GTK+ GNOME Jak monitorować Włączenie monitorowania id = gobject.io add watch(plik(otwarty), warunek, monitor)

Wątki w GTK+ GNOME Jak monitorować Włączenie monitorowania id = gobject.io add watch(plik(otwarty), warunek, monitor) funkcja monitorująca def monitor(źródło, warunek): Funkcja powinna zwrócić True jeśli ma dalej monitorować.

Wątki w GTK+ GNOME Korzystanie z wątków Dobra wiadomość threading.thread działa.

Wątki w GTK+ GNOME Korzystanie z wątków Dobra wiadomość threading.thread działa. Zła wiadomość Ale nie jest to takie proste.

Wątki w GTK+ GNOME Wersja 1. Wątek nie odwołuje się do GUI Przed wywołaniem gtk.main() import gobject gobject.threads init()

Wątki w GTK+ GNOME Przykład button.connect( clicked, lambda x: threading.thread(target=hello).start())

Wątki w GTK+ GNOME Interakcja wątków z GUI Inicjowanie gtk.gdk.threads init()

Wątki w GTK+ GNOME Uruchomienie aplikacji gtk.threads enter() gtk.main() gtk.threads leave()

Wątki w GTK+ GNOME Szkielet kodu w wątku gtk.threads enter() try: myentry.set text( foo ) finally: gtk.threads leave()

Wątki w GTK+ GNOME Szkielet kodu w wątku, wersja polecana with gtk.gdk.lock:...

Wątki w GTK+ GNOME Co to jest GNU Network Object Model Environment

Wątki w GTK+ GNOME A co jest ważne Więcej kontrolek (rozbudowane GTK+); desktop, aplikacje mogą się integrować z desktopem; własne aplety (dla środowiska GNOME); wsparcie dla tworzenia róznych wersji językowych.

Wątki w GTK+ GNOME GLADE i GNOME GNOME używa LibGlade

Wątki w GTK+ GNOME Przykład import gtk import gnome.ui import gtk.glade gnome.init( Wykład, 0.1 ) aplikacja = gtk.glade.xml( gnome.glade ) gtk.main()

Wątki w GTK+ GNOME

Wątki w GTK+ GNOME Zła wiadomość Są błędy, ale libglade nie jest już naprawiane.

Wątki w GTK+ GNOME Jak ktoś potrzebuje aplikacja = gnome.ui.app( Aplikacja, Okno aplikacji ) aplikacja.show() gtk.main()

Plan wykładu 1 Wątki w GTK+ Zadania okresowe Prawdziwe wątki GNOME 2 Systemy zorientowane na dokumenty Grafowe bazy danych Bazy typu klucz wartość

Rodzaje baz danych Trwałe słowniki Klient-serwer SQL Bekreley DB Gnu dbm (n)dbm Firebird Sqlite Oracle MySQL PostgeSQL DB/2

Bazy danych typu DBM Database manager Dane przechowywane są w pliku, który przypomina słownik Dostęp do danych jest po kluczu Wartość zwykle może być tylko napisem Implementacja: zwykle tablice haszujące i b-drzewa Brak odrębnego serwera, dane pamiętane są w lokalnym pliku Szybkie!!!

Korzystanie z DBM db[ jeden ] = one db[ dwa ] = two if trzy in db: del db[ trzy ]

Korzystanie z DBM import <modul> db = <modul>.open( storage.dbm, c ) db[ jeden ] = one db[ dwa ] = two if trzy in db: del db[ trzy ] db.close()

Dostępne moduły Python 2.* Python 3.* Opis dumbdb dbm.dumb wolny, ale czysto Pythonowa implementacja bsddb (dbhash) implementacja Berkeley DB dbm dbm.ndbm interfejs uniksowej (n)dbm gdbm dbm.gnu rozszerzenie dbm

Przetwarzanie całej kolekcji for key in db.keys(): print(db[key])

Przetwarzanie całej kolekcji for key in db.keys(): print(db[key]) Ostrzeżenie Wymaga odczytu do pamięci całego pliku

Przetwarzanie kolekcji, dumbdbm for key in db: print( db[, key, ] =, db[key]) db.close()

Przetwarzanie kolekcji dbhash print db.first() while True: try: el = db.next() print el except KeyError: break gdbm k = db.firstkey() while k!= None: print k k = db.nextkey(k)

Dostępne moduły for in firstkey(), nextkey() first(), next() dumbdbm X (n)dbm gdbm X dbhash X

Jak sobie radzić w tym bałaganie Używać generycznego pakietu anydbm

Jak sobie radzić w tym bałaganie Używać generycznego pakietu anydbm Używać pakietu whichdbm: >>> import anydbm >>> whichdb.whichdb( plik.db )

Berkeley DB Gdzie można spotkać Berkeley DB OpenLDAP, Subversion, Spamassasin, KDevelop Właściwości: transakcje; replikacje; blokowanie rekordów; kluczami są liczby naturalne.

A jak przechowywać obiekty Pakiet shelve pliki są słownikami przechowującymi pary (string, obiekt)

Pakiet shelve przykład import shelve db = shelve.open( dane.db ) db[ lista ] = [2,3,5,7,11] db.sync() del db[ obiekt ] db.close()

Silniki SQL Oracle DB/2 MySQL PostgreSQL MSSQL...

DB API Python Database API Specification Zunifikowany interfejs dostępu do różnych systemów BD. Obecna wersja: 2.0.

Otwarcie połączenia z serwerem BD connect( parametry ) # zwraca obiekt Connection

Otwarcie połączenia z serwerem BD connect( parametry ) # zwraca obiekt Connection MySQL import MySQLdb db = MySQLdb.connect(host= localhost, db= testing, user= user, passwd= 123456 )

Zamknięcie połączenia db.close()

Komunikacja z bd wysłanie zapytania wynik = db.cursor() wynik.execute( SELECT * FROM Studenci )

Komunikacja z bd wysłanie zapytania wynik = db.cursor() wynik.execute( SELECT * FROM Studenci ) pobranie wyniku row = wynik.fetchone() while row: print row row = wynik.fetchone() Opcjonalnie wynik.close()

Wynik: obiekt klasy Cursor Atrybuty wyniku: description: opisuje kolumny rowcount: liczba przetworzonych wierszy (np. INSERT czy UPDATE)...

DB API: dodatkowe informacje Standardowe wyjątki: Warning, DatabaseError, NotSupportedError,...

SQLite Plikowa baza danych, bez zewnętrznego serwera, żadnego kontaktu z adminem; moduł: sqlite3 Implementuje DB API 2.0 z rozszerzeniami

Użycie Sqlite Tworzenie tabeli import sqlite3 db = sqlite3.connect( /tmp/temp.db ) kursor = db.cursor() kursor.execute( create table Library (Author text, Title text, publish year int, price real) ) db.commit()

Użycie Sqlite Wstawienie tabeli do wiersza kursor.execute( insert into Library values ( Shakespeare, Hamlet, 2003, 25.5) )

Użycie Sqlite Pobranie danych bd (rozszerzenie DB API 2.0) kursor.execute( SELECT * FROM Library ) for row in kursor: print(row)

Sqlite Ciekawostka db = sqlite.connect( :memory: )

NoSQL NOSQL (not only SQL) Systemy baz danych o elastycznej strukturze danych. Czasem mówi się że są to ustrukturalizowane zasoby.

NoSQL NOSQL (not only SQL) Systemy baz danych o elastycznej strukturze danych. Czasem mówi się że są to ustrukturalizowane zasoby. Do czego się używa Proste, lecz wielkie bazy danych przetwarzane na wielu komputerach.

Systemy zorientowane na dokumenty Dokument Dokument zawiera jakąś informację. Dokument może być w formacie XML, YAML, JSON, PDF, MS Office. Dokumenty nie muszą mieć jednego schematu.

Systemy zorientowane na dokumenty Dokument Dokument zawiera jakąś informację. Dokument może być w formacie XML, YAML, JSON, PDF, MS Office. Dokumenty nie muszą mieć jednego schematu. Przykłady danych Imie= Adam Imie= Janina, Adres= ul. Cicha 132 m. 16, Dzieci=[ Staś, Krzyś ]

Inne cechy Dokumenty mają unikatowe klucze (string, URI).

Inne cechy Dokumenty mają unikatowe klucze (string, URI). Wyszukiwanie Wyszukiwanie oparte na kluczu lub zawartości.

Przykłady systemów CouchDB, MongoDB, Redis

MongoDB System MongoDB system zorienowany na dokumenty; kolekcja: coś w rodzaju tabeli; nazwa modułu: pymongo; wymaga uruchomionego serwera mongod.

Połączenie z bd from pymongo import Connection

Połączenie z bd from pymongo import Connection connection = Connection()

Połączenie z bd from pymongo import Connection connection = Connection() db = connection[ studenckie ]

Kolekcje Pobranie kolekcji (leniwe) kolekcja = db[ protokoly ] # alternatywnie: kolekcja.protokoly

Dodanie elementu do kolekcji import datetime python prot = { prowadzacy :, przedmiot : Zaawansowany kurs Pythona, pracownie : [, Jan Otop ], data : datetime.datetime.utcnow()}

Dodanie elementu do kolekcji import datetime python prot = { prowadzacy :, przedmiot : Zaawansowany kurs Pythona, pracownie : [, Jan Otop ], data : datetime.datetime.utcnow()} kolekcja.insert(python prot) # Zwraca ObjectId(..)

Wyszukiwanie elementów for prot in kolekcja.find({ prowadzacy : }): # prot jest słownikiem

Grafowe bazy danych Dane są trzymane w postaci grafów: węzły reprezentują obiekty, a krawędzie: związki między obiektami.

Zastosowanie Mapy, systemy geograficzne, dokumenty etc.

Bazy danych typu klucz-wartość Implementacje BigTable (Google) Apache Hadoop (Facebook, Amazon, HP, IBM, Microsoft) BerkeleyDB dbm

MapReduce Map Map( (klucz, wartość) ): przekształca każdą parę w listę par (kl, wart), a następnie łączy w grupy wartości związane z tym samym kluczem. Operacja jest wykonywana równolegle na każdej parze.

MapReduce Map Map( (klucz, wartość) ): przekształca każdą parę w listę par (kl, wart), a następnie łączy w grupy wartości związane z tym samym kluczem. Operacja jest wykonywana równolegle na każdej parze. Reduce Reduce(kl, lista(wartości)): operacja wykonywana na każdej grupie i dająca w wyniku listę kolejnych wartości.

Przykład (Hadoop) # zliczanie słów we wszystkich dokumentach from pydoop.pipes import Mapper, Reducer, Factory, runtask class WordCountMapper(Mapper): def map(self, context): words = context.getinputvalue().split() for w in words: context.emit(w, 1 ) class WordCountReducer(Reducer): def reduce(self, context): s = 0 while context.nextvalue(): s += int(context.getinputvalue()) context.emit(context.getinputkey(), str(s)) runtask(factory(wordcountmapper, WordCountReducer))

HDFS: Hadoop Distributed File System Rozproszony, skalowalny, przenośny, obsługujący replikację i wielkie pliki.