5 η Διάλεξη Python - Αρχεία

Σχετικά έγγραφα
10 η Διάλεξη Python Βάσεις δεδομένων στη python

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15)

Κεφάλαιο 12: Είσοδος και έξοδος δεδομένων σε αρχεία

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Εργαστήριο 9: Αρχεία

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Η/Υ. Χειρισμός Αρχείων. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Μεθόδων Επίλυσης Προβλημάτων

Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Εργαλεία ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ FILE & PROCESS HANDLING

Λειτουργικό Σύστημα: διαχείριση πόρων. Τι είναι ένα αρχείο ; Διαχείριση αρχείων. Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Αρχεία Δεδομένων. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

S, (5, -3, 34, -23, 7) ( *, _

Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

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

Διαδικασιακός Προγραμματισμός

Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

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

Διάλεξη 18η: Διαχείρηση Αρχείων

Πως θα αποθηκεύσει τη λίστα με τα ψώνια του και θα την ανακτήσει στο Σ/Μ; και πως θα προσθέσει στη λίστα του επιπλέον προϊόντα;

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. ( ιάλεξη 13) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

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

Λειτουργικό Σύστημα: διαχείριση πόρων. Διαχείριση αρχείων. Τι είναι ένα αρχείο ; Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

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

File Handling & I/O ΓΛΩΣΣΙΚΉ ΤΕΧΝΟΛΟΓΊΑ

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

Αρχεία Ένα αρχείο αποτελείται από μία σειρά ομοειδών δεδομένων που ονομάζονται λογικές εγγραφές (logical record)

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

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

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

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

DELETE, UPDATE, INSERT.

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

DELETE, UPDATE, INSERT

ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ

ΤΑΞΙΝΟΜΗΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΕΡΩΤΗΜΑΤΟΣ

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

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

Σημειωματάριο Δευτέρας 20 Νοε. 2017

databases linux - terminal (linux / windows terminal)

Μετατροπή χαρακτήρων ASCII σε αριθμό (atoi) & διάβασμα, και αποθήκευση του περιεχομένου του στη μνήμη. (Διάλεξη. Πανεπιστήμιο Κύπρου

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

ιαφάνειες παρουσίασης #6 (β)

MySQL stored procedures

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

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

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

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


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

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

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη

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

ΑΡ Χ Ε Ι Α Κ Ε Ι Μ Ε Ν Ο Υ (text files)

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

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Πληροφορική ΙΙ Θεματική Ενότητα 13

Λιβανός Γιώργος Εξάμηνο 2017Β

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

Λειτουργικά Συστήματα (Λ/Σ)

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

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

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ

Αρχιτεκτονική Υπολογιστών

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

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

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

Σημειωματάριο Τετάρτης 25 Οκτ. 2017

Ενδεικτική περιγραφή μαθήματος

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

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο

Αικατερίνη Καμπάση, PhD. Τμήμα Προστασίας και Συντήρησης Πολιτισμικής Κληρονομιάς Α.Τ.Ε.Ι. Ιονίων Νήσων

Κεφάλαιο VΙ: Προσπέλαση Αρχείων. 5.1 Αρχεία δεδομένων.

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

ΜΕΤΑΦΟΡΑ ΑΡΧΕΙΩΝ FTP

Εισαγωγή στον Προγραμματισμό

Διαδικασιακός Προγραμματισμός

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

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

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

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

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

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #15

Εργαστήριο Σημασιολογικού Ιστού

Βάσεις Δεδομένων 2η εργαστηριακή άσκηση

SMPcache. Ένα εργαλείο για προσομοίωση-οπτικοποίηση κρυφής μνήμης (Cache)

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΞΙ (6)

Βιβλιοθήκη stdio. Προγραμματισμός II 1

scanf() scanf() stdin scanf() printf() int float double %lf float

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

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

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

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

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

Transcript:

5 η Διάλεξη Python - Αρχεία

Αρχεία Άνοιγμα Επεξεργασία Κλείσιμο

Αρχεία Η python κάνει διάκριση μεταξύ αρχείων κειμένου (text) και δυαδικών αρχείων (binary) Τα δεδομένα στα αρχεία κειμένου χωρίζονται μεταξύ τους με το χαρακτήρα αλλαγής γραμμής. Στα συστήματα Unix/Linux είναι ο \n ενώ στα windows \r\n To άνοιγμα ενός αρχείου γίνεται με την ενσωματωμένη συνάρτηση open: open(name[,mode]) Η εντολή open για το άνοιγμα ενός αρχείου δημιουργεί ένα αντικείμενο για το άνοιγμα του αρχείου: file object = open(file_name [, access_mode][, buffering]) file_name: Το όνομα του αρχείου που θέλουμε να προσπελάσουμε access_mode: Καθορίζει τη κατάσταση για την οποία θα ανοίξουμε το αρχείο: Διάβασμα (read), εγγραφή (write), προσθήκη (append) κλπ. Η προκαθορισμένη τιμή είναι η read buffering: εάν δώσουμε 0 δεν θα έχουμε ενδιάμεση μνήμη εάν δώσουμε 1 η ενδιάμεση μνήμη θα σχηματοποιηθεί κατά τη διάρκεια προσπέλασης του αρχείου.

Αρχεία Αρχικά ανοίγετε ένα αρχείο χρησιμοποιώντας την ενσωματωμένη συνάρτηση open καθορίζοντας την ονομασία του αρχείου και τον τρόπο με τον οποίο θέλουμε να ανοίγει το αρχείο. Ο τρόπος μπορεί να είναι με διάβασμα ('r', read mode), με γράψιμο ('w', write mode) ή με πρόσθεση ('a', append mode). Μπορούμε επίσης να χειριστούμε ένα αρχείο κειμένου ('t', text file) ή ένα δυαδικό αρχείο ('b', binary file). Στην πραγματικότητα υπάρχουν πάρα πολλοί τρόποι διαθέσιμοι και η help(open) θα σας δώσει περισσότερες λεπτομέρειες γι αυτούς. Από προεπιλογή η open() θεωρεί το αρχείο ως αρχείο κειμένου ('text file) και το ανοίγει με τον τύπο read.

r w a t b Αρχεία Το όρισμα mode είναι προαιρετικό και καθορίζει τον τρόπο προσπέλασης του αρχείου Πχ η αν δώσουμε w+b δημιουργούμε ένα δυαδικό αρχείο για ανάγνωση και εγγραφή n=open( test.dat ) Ανοίγει αρχείο κειμένου για ανάγνωση (προεπιλεγμένη τιμή) Ανοίγει ένα αρχείο κειμένου για γράψιμο. Αν το αρχείο υπάρχει τα περιεχόμενά του διαγράφονται Ανοίγει ένα αρχείο κειμένου για προσθήκη, προσθέτοντας τα νέα δεδομένα στο τέλος του αρχείου. Αν το αρχείο δεν υπάρχει το δημιουργεί Χειρισμός ως αρχείου κειμένου (προεπιλεγμένη τιμή) Χειρισμός ως δυαδικό αρχείο (binary file) + Ανάγνωση και γράψιμο. Προσθήκη εγγραφής στην ανάγνωση (r+)και το αντίστροφο (w+) f.close() : γράφει όλα τα μη αποθηκευμένα δεδομένα στο αρχείο και κλείνει το αρχείο ελευθερώνοντας τους δεσμευμένους πόρους που σχετίζονται μαζί του

Παράδειγμα

Αρχεία Το διάβασμα από ένα αρχείο γίνεται με τη μέθοδο read([size]) Το προαιρετικό αριθμητικό [size] καθορίζει το πλήθος των bytes που θα διαβαστούν από το αρχείο. Αν το παραλείψουμε η read διαβάζει ολόκληρο το αρχείο. Όταν εντοπιστεί το τέλος του αρχείου η μέθοδος επιστρέφει ένα κενό αλφαριθμητικό Η μέθοδος readline() χρησιμοποιείται για το διάβασμα μιας γραμμής από το αρχείο Η μέθοδος αυτή κάθε φορά που εκτελείται διαβάζει την επόμενη γραμμή. Η readline() επιστρέφει τη γραμμή που διάβασε προσθέτοντας τον χαρακτήρα αλλαγής γραμμής στο τέλος της. Αν κληθεί με το προαιρετικό όρισμα [size] επιστρέφει τους πρώτους size χαρακτήρες της γραμμής προσθέτοντας πάντας τον χαρακτήρα αλλαγής γραμμής. Όταν εντοπιστεί το τέλος του αρχείου επιστρέφει ένα κενό αλφαριθμητικό

Παραδείγματα

Παράδειγμα

Αρχεία Για να γράψουμε σε ένα αρχείο δεδομένα που δεν είναι αλφαριθμητικά τα μετατρέπουμε χρησιμοποιώντας τη συνάρτηση str(). Μπορούμε να χρησιμοποιήσουμε και τη str.format() ή τους προσδιοριστές μορφοποίησης %

Αρχεία Η μέθοδος tell() μας επιστρέφει τη τρέχουσα θέση στο αρχείο με άλλα λόγια τη θέση που θα διαβάσει η επόμενη εντολή read ή θα γράψει η επόμενη εντολή write. Η μέθοδος seek(offset[, from]) αλλάζει τη θέση αναφορά μέσα στο αρχείο. Η παράμετρος offset τον αριθμό των bytes που θα μετακινηθούν, ενώ η παράμετρος from καθορίζει τη θέση από την από την οποία θα μετακινηθούν τα bytes Η μέθοδος fileno(): Επιστρέφει έναν ακέραιο, που περιγράφει το αρχείου (file descriptor) και χρησιμοποιείται από το ΛΣ (το 0 αντιστοιχεί στην προκαθορισμένη είσοδο, το 1 στην προκαθορισμένη έξοδο και το 2 στην προκαθορισμένη έξοδο λαθών) Η μέθοδος next() : Επιστρέφει κάθε φορά την επόμενη γραμμή του αρχείου Η μέθοδος readlines(): Διαβάζει όλες τις γραμμές του αρχείου σε μια λίστα Η μέθοδος truncate([size]) : Περικόπτει το μέγεθος ενός αρχείου κατά [size] bytes από την τρέχουσα θέση. Χωρίς το προαιρετικό [size] το αρχείο μηδενίζεται.

Αρχεία

Αρχεία Η εντολή with: ένας σύντομος τρόπος για άνοιγμα και κλείσιμο ενός αρχείου Η εντολή with θα κλείσει αυτόματα το αρχείο μόλις ολοκληρωθούν όλες οι εντολές του μπλοκ της. Το κλείσιμο θα γίνει ανεξάρτητα από τον τρόπο εξόδου από το μπλοκ. Στα αρχεία κειμένου η μετακίνηση γίνεται μόνο αναφορικά από την αρχή του αρχείου. Εξαίρεση αποτελεί η μετακίνηση στο τέλος του αρχείου με seek(0,2).

Αρχεία Για να χειριστούμε δυαδικά αρχεία προσθέτουμε στην παράμετρο mode της συνάρτησης open το b για binary προσπέλαση f=open( onoma.dat, rb ) άνοιγμα δυαδικού για διάβασμα

Αρχεία -CSV Τα αρχεία CSV (comma Separated Values) χρησιμοποιούνται κυρίως για την ανταλλαγή δεδομένων μεταξύ διαφορετικών εφαρμογών. Συνήθως η πρώτη γραμμή περιέχει τα ονόματα των πεδίων και στη συνέχεια ακολουθούν τα δεδομένα. H python διαθέτει τη μονάδα csv που παρέχει διάφορες συναρτήσεις για το χειρισμό αρχείων csv Το αντικείμενο reader υλοποιεί το πρωτόκολλο iterator, οπότε η ανάγνωση κάθε γραμμής γίνεται μέσο επανάληψης Η παράμετρος delimiter καθορίζει το διαχωριστικό χαρακτήρα. Κάθε γραμμή που διαβάζεται επιστρέφεται ως λίστα αλφαριθμητικών. Η εντολή print(,.join(row)) τυπώνει ένα ενιαίο αλφαριθμητικό. Η μέθοδος join() δημιουργεί ένα αλφαριθμητικό από τα στοιχεία μιας λίστας χρησιμοποιώντας ως διαχωριστικό τους χαρακτήρες που καθορίζουμε

Αρχεία -CSV Αν θέλουμε να εμφανίσουμε τα περιεχόμενα του αρχείου χωρίς τα ονόματα των πεδίων ο κώδικας γίνεται: Με τη συνάρτηση enumerate(iterable[,start=0]) μας επιστρέφεται τη θέση κάθε στοιχείου, έτσι στη θέση i=0 είναι τα ονόματα των πεδίων και με την εντολή continue τα παραλείπουμε.

Αρχεία -CSV Για να γράψουμε σε ένα αρχείο csv χρησιμοποιούμε το αντικείμενο write: Αν έχουμε περισσότερα δεδομένα να γράψουμε στο αρχείο (πχ μια λίστα από λίστες) μπορούμε να χρησιμοποιήσουμε μια επαναληπτική δομή for:

Pickle Η μονάδα pickle μας παρέχει μεθόδους για να αποθηκεύουμε σύνθετα δεδομένα σε αρχεία (πχ μια λίστα ή ένα λεξικό). Διαθέτει 2 βασικές μεθόδους: dump(): αποθηκεύει ένα αντικείμενο στο αρχείο load(): ανακτά ένα αντικείμενο από το αρχείο.

Pickle Το επόμενο πρόγραμμα δημιουργεί το αρχείο phones.shv (αν δεν υπάρχει) και θα αποθηκεύσει σε αυτό 3 λίστες. Η μονάδα shelve μας δίνει τη δυνατότητα να αποθηκεύσουμε δεδομένα σε ένα αρχείο μαζί με ένα κλειδί.

Αρχεία Renaming and Deleting Files: κάνουμε εισαγωγή της βιβλιοθήκης import os os.rename(current_file_name, new_file_name) os.delete(file_name) Δημιουργία καταλόγου : os.mkdir("newdir") Αλλαγή τρέχοντος καταλόγου os.chdir("newdir") Προβολή τρέχοντος καταλόγου os.getcwd() Διαγραφή καταλόγου os.rmdir('dirname')

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Η 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()

Παράδειγμα Να φτιαχτεί πρόγραμμα που θα γράφει τα δεδομένα ενός λεξικού σε ένα αρχείο. Κάθε στοιχείο του λεξικού θα είναι σε ξεχωριστή γραμμή και το κλειδί με την αντίστοιχη τιμή θα χωρίζονται με κόμμα. Στη συνέχεια να φτιαχτεί πρόγραμμα που διαβάζει το αρχείο και δημιουργεί το αντίστοιχο λεξικό

Παράδειγμα Το επόμενο παράδειγμα δείχνει τη χρήση των κλάσεων DictWriter και DictReader για τη δημιουργία ενός αρχείου csv από στοιχεία λεξικού καθώς και το διάβασμα του αρχείου αυτού.