10 η Διάλεξη Python Βάσεις δεδομένων στη python

Σχετικά έγγραφα
5 η Διάλεξη Python - Αρχεία

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Μανουσόπουλος Χρήστος

MySQL + Γλώσσα Προγραμματισμού. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Ανάπτυξη διαδικτυακών εφαρμογών με την Python Το εργαλείο Flask

Διάλεξη 16: SQL DML IV, SQL DCL, SQL TCL. Διδάσκων: Παναγιώτης Ανδρέου

Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY.

Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY.

9η Εργαστηριακή Άσκηση: Stored Procedures - Triggers. Αποθηκευμένες Διαδικασίες (Stored Procedures):

MySQL + Γλώσσα Προγραμματισμού. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Μανουσόπουλος Χρήστος

DELETE, UPDATE, INSERT.

DELETE, UPDATE, INSERT

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

Ηλεκτρονικοί Υπολογιστές II

Εργαστήριο Βάσεων Δεδομένων. Triggers

Βάσεις Δεδομένων ΗγλώσσαSQL (Structured Query Language)

Βάσεις Δεδομένων Η γλώσσα SQL (Structured Query Language) Εισαγωγή στην SQL (2) Ιστορικά Στοιχεία. SQL - Structured Query Language (1)

Εργαστήριο Βάσεων Δεδομένων

Ακεραιότητα και Ασφάλεια Μέρος 1 Σχεδιασμός Βάσεων Δεδομένων

Βάσεις Δεδομένων. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Ηλεκτρονικοί Υπολογιστές II

Σχεδιασμός Βάσεων Δεδομένων

Θέματα Προγραμματισμού Διαδικτύου ~ MySQL & PHP ~

Εργαστήριο #10 (Ε10) 1

databases linux - terminal (linux / windows terminal)

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

. Εργαστήριο Βάσεων Δεδομένων. Triggers

ΕΠΛ 342 Βάσεις εδοµένων

Το σχεσιακό μοντέλο βάσεων δεδομένων

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL

Κεφάλαιο 13 Δοσοληψίες



Κεφάλαιο 5. Δημιουργία φορμών για τη βάση δεδομένων DVDclub

Αποθηκευμένες Διαδικασίες Stored Routines (Procedures & Functions)

Βασικές Εντολές SQL. Θεωρία & Εντολές SQL. Γραμμή Εντολών MS-DOS (MySQL)

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 3) Ουρανία Σμυρνάκη

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Επιλέγει όλες τις πλειάδες, από μια σχέση R, που ικανοποιούν τη συνθήκη επιλογής.

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ.

H SQL είναι η γλώσσα για όλα τα εμπορικά σχεσιακά συστήματα διαχείρισης βάσεων δεδομένων

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ. Ε. Χρήσιμοι Σύνδεσμοι

(Μέρος 3:Γλώσσα Ορισµού, Γλώσσα Τροποποίησης, Ενσωµατωµένη SQL) Βάσεις εδοµένων Ευαγγελία Πιτουρά 2

ΣΧΕΔΙΑΣΜΟΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ ΕΡΓΑΣΤΗΡΙΟ 3

Εργαστήριο βάσεων δεδομένων. MySQL Stored Procedures

Τμήμα Διοίκησης Επιχειρήσεων

Διάλεξη 02: Βάσεις Δεδομένων Εισαγωγή. Διδάσκων: Παναγιώτης Ανδρέου

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

ΘΕΜΑΤΑ. Ερώτηση 1 Κατά τη Φυσική Αποθήκευση (Physical storage) μιας ΒΔ αποθηκεύονται στον δίσκο τα:

Postgress ΣΤΟΧΟΣ ΣΧΕΤΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ ΥΛΙΚΟ. ΠΕΡΙΒΑΛΛΟΝ ΓΙΑ ΕΞΑΣΚΗΣΗ pgadmin ΥΠΟΒΑΘΡΟ. Συναρτήσεις στην PostgreSQL. 1. Γενικά

Βάσεις Δεδομένων (Databases)

Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας. 3ο Μάθημα: Εισαγωγή στην SQL. Δρ. Κωνσταντίνος Χ.

Ηλεκτρονικοί Υπολογιστές II

Διάλεξη 07: Σχεσιακό Μοντέλο II (Relational Data Model) Διδάσκων: Παναγιώτης Ανδρέου

Ακολουθεί η πλήρης ανάλυση της παραµετροποίησης χωρισµένη στις αντίστοιχες ενότητες µε αυτές του module Customization Tools. :

Ορισμοί Σχεσιακού Μοντέλου και (απλές)τροποποιήσεις Σχέσεων στην SQL. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Α.Τ.Ε.Ι. ΚΑΒΑΛΑΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ

Σχεδιασμός Πληροφοριακών Συστημάτων. Σημειώσεις

Εργαστήριο Βάσεων Δεδομένων. Δικαιώματα Χρηστών Προβολές

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε.

. Εργαστήριο Βάσεων Δεδομένων. Stored Procedures

Βάσεις δεδομένων. (8 ο μάθημα) Ηρακλής Βαρλάμης

Βάσεις Περιβαλλοντικών Δεδομένων

Εισαγωγή στην Ανάπτυξη Εφαρμογών Web με Χρήση της Python, του Apache και του mod_python

Ορισµοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΙI

Εργαστήριο Βάσεων Δεδομένων

Ενεργές ΒΔ. Παύλος Εφραιμίδης pefraimi <at> ee.duth.gr. Βάσεις Δεδομένων Ενεργές ΒΔ 1

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

Σχεδίαση και Χρήση Βάσεων Δεδομένων. Χρήση της MySQL. Γιώργος Πυρουνάκης -

NetBeans και σχετικά προγράμματα. Κακαρόντζας Γεώργιος Κέντρο Αριστείας Ανοιχτού Λογισμικού ΑΠΘ 1ο Θερινό Σχολείο Κώδικα

Βάσεις Δεδομένων Ι SQL Μέρος 3 ο. (Constraints & Joins) Φώτης Κόκκορας (MSc/PhD) Τμήμα Μηχανικών Πληροφορικής ΤΕ

ΗΥ-360 Αρχεία και Βάσεις Δεδομένων Διδάσκων: Δ. Πλεξουσάκης. Φροντιστήριο SQL Examples Ξένου Ρουμπίνη

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 9β: SQL (Διαχείριση εγγραφών, Όψεις, Περιορισμοί, Εναύσματα) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ. Βάσεις Δεδομένων

Διαδικτυακές Εφαρμογές Ενότητα 7: Προσπέλαση ΒΔ με το JDBC

ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ Relational Model. SQL Μαθ. #11

Διαχείριση Πολιτισμικών Δεδομένων

Διαχείριση χρηστών και δικαιωμάτων

PostgreSQL. Oracle. Εαρινό Εξάμηνο

Η SQL αποτελείται από δύο υποσύνολα, τη DDL και τη DML.

Διαχείριση Πολιτισμικών Δεδομένων

ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (ΓΡΕΒΕΝΑ)

Αστέριος Κατσιφοδήμος Γιώργος Νικολάου Κώστας Βρυώνη. ΕΠΛ 428 Προγραμματισμός Συστημάτων 16/04/07

Σχεδίαση και λειτουργία βάσης δεδομένων Το παράδειγμα της μαιευτικής κλινικής Ευάγγελος Καρβούνης

Προγραμματισμός Παγκόσμιου Ιστού

Επίλυση προβλήματος με Access

Προγραμματισμός ΙΙ (Java) 6. Διαχείριση δεδομένων

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

Ανάκτηση Δεδομένων (Information Retrieval)

ΗΛΕΚΤΡΟΝΙΚΟ ΚΑΤΑΣΤΗΜΑ

Ανοικτά Ακαδημαϊκά Μαθήματα

Εργαστήριο Βάσεων Δεδομένων

PHPMyAdmin: Σύντομος οδηγός για αρχάριους

( Boats)) ( Tempsids, bid. sname. Boats. Boats. Boats. (Reserves)/ > Reserves. Interlake' Sailors) ...

2. Εισαγωγή Δεδομένων σε Σχεσιακή Βάση Δεδομένων

Transcript:

10 η Διάλεξη Python Βάσεις δεδομένων στη python

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Η standard διεπαφη της python για βάσεις δεδομένων βασίζεται στο DB-API Python Database API υποστηρίζει ένα ευρύ φάσμα βάσεων δεδομένων GadFly msql MySQL PostgreSQL Microsoft SQL Server 2000 Informix Interbase Oracle Sybase

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Πρέπει να κατεβάσουμε ξεχωριστό DB API για κάθε βάση που θέλουμε να προσπελάσουμε Αν θέλουμε να προσπελάσουμε μια βάση της Oracle καθώς και μια βάση της MySQL πρέπει να κατεβάσουμε τα αρθρώματα (DB-API) τόσο για την Oracle όσο και για την MySQL Το DB API μας εφοδιάζει με ένα μίνιμουμ στάνταρντ για να δουλέψουμε με βάσεις χρησιμοποιώντας της δομές της Python και τη σύνταξη της python όπου αυτό είναι δυνατό. Το API περιλαμβάνει τα ακόλουθα: Εισαγωγή (Import) του api module. Σύνδεση με τη βάση. SQL δηλώσεις και διαδικασίες. Κλείσιμο της σύνδεσης MySQLdb είναι μια διεπαφή για την σύνδεση με έναν εξυπηρετητή μιας MySQL database μέσα από τη python.

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ας θωρήσουμε μια βάση δεδομένων η οποία θα περιλαμβάνει τα εξής: Ονομάζουμε τη βάση μας «TESTDB» Δημιουργούμε έναν πίνακα στη βάση με όνομα «EMPLOYEE» Ο πίνακας θα έχει τα πεδία: FIRST_NAME, LAST_NAME, AGE, SEX and INCOME. Φτιάχνουμε ένα User ID "testuser" με password "test123" ο οποίος θα έχει πρόσβαση στη βάση Βεβαιωνόμαστε ότι το Python module MySQLdb είναι εγκατεστημένο

Παράδειγμα import MySQLdb # Ανοίγουμε τη βάση db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # προετοιμάζουμε έναν αντικείμενο «cursor» χρησιμοποιώντας τη μέθοδο cursor() cursor = db.cursor() # εκτελούμε ένα SQL ερώτημα χρησιμοποιώντας τη μέθοδο execute() cursor.execute("select VERSION()") # Ανακτούμε μια γραμμή με τη μέθοδο fetchone() data = cursor.fetchone() print "Database version : %s " % data # αποσύνδεση από το server db.close()

Δημιουργία Πίνακα στη βάση: import MySQLdb # δημιουργία σύνδεσης με τη βάση db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # ετοιμάζουμε ένα αντικείμενο «cursor» χρησιμοποιώντας τη μέθοδο cursor() cursor = db.cursor() # αν ο πίνακας υπάρχει τον απορρίπτουμε με τη μέθοδο execute() cursor.execute("drop TABLE IF EXISTS EMPLOYEE") # Δημιουργία πίνακα με τα πεδία του sql = """CREATE TABLE EMPLOYEE ( FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT, SEX CHAR(1), INCOME FLOAT )""" cursor.execute(sql) # αποσύνδεση db.close()

INSERT Τη λειτουργία Insert τη χρησιμοποιούμε όταν θέλουμε να εισάγουμε δεδομένα στη βάση μας: import MySQLdb # Σύνδεση στη βάση db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # ετοιμάζουμε ένα αντικείμενο «cursor» χρησιμοποιώντας τη μέθοδο cursor() cursor = db.cursor() # φτιάχνουμε ένα ερώτημα SQL χρησιμοποιώντας τη μέθοδο INSERT για να εισάγουμε δεδομένα στη βάση sql = """INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES ('Mac', 'Mohan', 20, 'M', 2000)""" try: # εκτελούμε την εντολή cursor.execute cursor.execute(sql) # αποθηκεύουμε της αλλαγές στη βάση db.commit() except: # επιστροφή στην περίπτωση λάθους db.rollback() # αποσύνδεση db.close()

INSERT Το προηγούμενο παράδειγμα μπορεί να ξαναγραφτεί έτσι ώστε να δημιουργήσουμε ένα δυναμικό sql ερώτημα: import MySQLdb # Σύνδεση στη βάση db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # προετοιμασία ενός αντικειμένου cursor με τη μέθοδο cursor() cursor = db.cursor() # Προετοιμασια ερωτήματος SQL για την εισαγωγή εγγραφής στη βάση. sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \ LAST_NAME, AGE, SEX, INCOME) \ VALUES ('%s', '%s', '%d', '%c', '%d' )" % \ ('Mac', 'Mohan', 20, 'M', 2000) try: # εκτέλεση της εντολής cursor.execute(sql) # αποθηκεύουμε της αλλαγές στη βάση db.commit() except: # επιστροφή στην περίπτωση λάθους db.rollback() # αποσύνδεση db.close()

READ Την εντολή read τη χρησιμοποιούμε για να διαβάσουμε πληροφορίες από τη βάση μας. Αφού κάνουμε σύνδεση στη βάση μας και χρησιμοποιούμε μια εκ των δύο μεθόδων που περιγράφονται παρακάτω; fetchone(): κάθε κλήση της μεθόδου θα μας επιστρέψει μια εγγραφή από τη βάση. fetchall(): κάθε κλήση της μεθόδου θα μας επιστρέψει πολλαπλές εγγραφές rowcount: μας επιστρέφει των αριθμό των εγγραφών οι οποίες επηρεάζονται από την εκτέλεση της εντολής execute

READ Παράδειγμα import MySQLdb # Κάνουμε σύνδεση db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # προετοιμάζουμε ένα αντικείμενο cursor χρησιμοποιώντας τη μέθοδο cursor() cursor = db.cursor() # Προετοιμασία ερωτήματος SQL για να κάνουμε INSERT μια εγγραφή στη βάση. sql = "SELECT * FROM EMPLOYEE \ WHERE INCOME > '%d'" % (1000) try: # Εκτελούμε την εντολή SQL cursor.execute(sql) # φέρνουμε όλες της εγγραφές σε μια λίστα. results = cursor.fetchall() for row in results: fname = row[0] lname = row[1] age = row[2] sex = row[3] income = row[4] # τυπώνουμε τις εγγραφές που ανακτήσαμε print "fname=%s,lname=%s,age=%d,sex=%s,income=%d" % \ (fname, lname, age, sex, income ) except: print "Error: unable to fecth data" # αποσύνδεση από server db.close()

Update Η λειτουργία update χρησιμοποιείται για την ενημέρωση μιας ήδη υπάρχουσας εγγραφής στη βάση δεδομένων import MySQLdb # Open database connection db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # prepare a cursor object using cursor() method cursor = db.cursor() # Prepare SQL query to UPDATE required records sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M') try: # Execute the SQL command cursor.execute(sql) # Commit your changes in the database db.commit() except: # Rollback in case there is any error db.rollback() # disconnect from server db.close()

Delete Με την εντολή delete διαγράφουμε εγγραφές από τη βάση μας: import MySQLdb # Open database connection db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # prepare a cursor object using cursor() method cursor = db.cursor() # Prepare SQL query to DELETE required records sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20) try: # Execute the SQL command cursor.execute(sql) # Commit your changes in the database db.commit() except: # Rollback in case there is any error db.rollback() # disconnect from server db.close()

Performing Transactions Οι συναλλαγές είναι ένας μηχανισμός που εξασφαλίζει τη συνοχή των δεδομένων. Οι συναλλαγές έχουν τέσσερις ιδιότητες: Atomicity (ατομικότητα) : Αν δεν ολοκληρωθεί μια συναλλαγή δεν γίνεται τίποτα στη βάση Consistency (συνοχή) : Μια συναλλαγή πρέπει να ξεκινάει και να τελειώνει με σταθερό σύστημα. Isolation (απομόνωσή): Ενδιάμεσά αποτελέσματα δεν είναι ορατά προς τα έξω Durability (ανθεκτικότητα): Μόλις μια δοσοληψία ολοκληρωθεί τα αποτελέσματα είναι μόνιμα ακόμα και μετά από μια αποτυχία του συστήματος. Το DB API 2.0 της python έχει 2 μεθόδους για να εκτελέσει ή να αναιρέσει μια συναλλαγή με τη βάση δεδομένων

Performing Transactions # Prepare SQL query to DELETE required records sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20) try: # Execute the SQL command cursor.execute(sql) # Commit your changes in the database db.commit() except: # Rollback in case there is any error db.rollback()

Commit - Rollback H λειτουργία commit δίνει το τελικό «σήμα» στη βάση δεδομένων να μονιμοποιήσει της όποιες αλλαγές έχουν γίνει πάνω της. Η λειτουργία rollback χρησιμοποιείται για την αναίρεση των αλλαγών σε περίπτωση που δεν είναι ικανοποιητικό το αποτέλεσμά τους