Μέχρι τώρα τα δεδομένα που έχουμε εισαγάγει στα προγράμματα που κατασκευάσαμε, είτε προέρχονται από τον χρήστη, π.χ. μέσω της συνάρτησης input() , είτε είναι στοιχεία που εισάγει ο χρήστης μέσω γραφικής διεπαφής, είτε είναι δεδομένα που διαβάζουμε από ένα αρχείο που βρίσκεται στο δίσκο του υπολογιστή μας και το οποίο ανοίγουμε με την συνάρτηση open(filename, 'r') .
Όμως, όταν τα δεδομένα είναι σύνθετα και μεγάλου όγκου, συχνά αυτά είναι αποθηκευμένα σε εξωτερικές πηγές και είναι οργανωμένα με συγκεκριμένη δομή. Στο κεφάλαιο αυτό θα κάνουμε μια επισκόπηση διαφόρων τρόπων που διατίθενται για να αποθηκεύσουμε και να ανακτήσουμεδεδομένα σε αρχεία τύπου csv, pickle, JSON καθώς και σε Βάσεις Δεδομένων (Data Base) sqlite και mongodb.
Τα αρχεία csv (comma separated values) είναι αρχεία χαρακτήρων οργανωμένα κατά στήλες, με κάποιο διαχωριστικό σύμβολο μεταξύ των στηλών. Παλιότερα χρησιμοποιούσαμε το σύμβολο κόμμα (','), για αυτό και το όνομα csv (comma separated values, τιμές διαχωρισμένες με κόμματα), ενώ, όπως θα δούμε, μπορούμε να ορίσουμε εμείς τον διαχωριστικό χαρακτήρα (delimiter). Για την αποθήκευση και ανάκτηση δεδομένων σε αρχεία csv θα χρησιμοποιήσουμε τη βιβλιοθήκη csv .
Τα αρχεία pickle είναι δυαδικά αρχεία που περιέχουν ακολουθίες από bytes, στα οποία μπορούμε να αποθηκεύσουμε δομές δεδομένων (λίστες, λεξικά ακόμη και αντικείμενα). Τα δεδομένα μπορούν να ανακτηθούν απευθείας στις ίδιες δομές με απλές εντολές. Για την αποθήκευση και ανάκτηση δεδομένων από αρχεία αυτού του τύπου θα χρησιμοποιήσουμε τη βιβλιοθήκη pickle . Η βιβλιοθήκη αυτή είναι ιδιαίτερα εύχρηστη στην Python για μόνιμη αποθήκευση σύνθετων δομών δεδομένων, όμως τα αρχεία pickle είναι συμβατά μόνο με προγράμματα της Python.
Αντίθετα, η JSON (JavaScript Object Notation) ορίζει ένα πρότυπο για ανταλλαγή δεδομένων, ή αποθήκευση δεδομένων, τύπου λεξικών ή λιστών της Python, που είναι συμβατό με διαφορετικές γλώσσες προγραμματισμού, και για αυτό χρησιμοποιείται ευρύτατα από υπηρεσίες στο διαδίκτυο. Θα δούμε στη συνέχεια πώς μπορούμε να αποθηκεύσουμε και να ανακτήσουμε δεδομένα σε μορφή JSON με χρήση της βιβλιοθήκης json .
Στη συνέχεια, θα δούμε πώς να αποθηκεύσουμε δεδομένα σε μια Βάση Δεδομένων, δηλαδή σε μια συλλογή λογικά συσχετιζόμενων δεδομένων, τα οποία βρίσκονται σε ένα διαθέσιμο μέσο αποθήκευσης, σε έναν δίσκο του υπολογιστή μας ή σε κάποιον εξυπηρετητή, και στα οποία έχουν πρόσβαση εφαρμογές, όπως προγράμματα Python.
Στη σχετική ενότητα θα δούμε πώς δημιουργείται μια Βάση Δεδομένων, πώς γεμίζει με δεδομένα και ποιος είναι ο τρόπος πρόσβασης στα δεδομένα αυτά και διαχείρισής τους από την Python. Θα χρησιμοποιήσουμε για το σκοπό αυτό αρχικά τη βιβλιοθήκη sqlite3 , μιαν από τις πιο δημοφιλείς βάσεις δεδομένων που ακολουθούν το σχεσιακό μοντέλο, και επικοινωνούμε με αυτήν με εντολές της SQL.
Στο τέλος του κεφαλαίου αυτού θα δούμε επίσης τη βιβλιοθήκη pymongo που μάς επιτρέπει να έχουμε πρόσβαση στη βάση δεδομένων μη σχεσιακού τύπου MongoDB.
Το πρόβλημα που θα προσπαθήσουμε να λύσουμε είναι η ανάπτυξη μιας εφαρμογής που διαχειρίζεται τις βαθμολογίες ενός Πανεπιστημιακού Τμήματος, δηλαδή που διαχειρίζεται στοιχεία των φοιτητών και των μαθημάτων που διδάσκονται. Η εφαρμογή μάς επιτρέπει να τυπώνουμε την καρτέλα ενός φοιτητή με όλες τις βαθμολογίες του, αλλά και την κατάσταση βαθμολογιών ενός συγκεκριμένου μαθήματος, καθώς και τον μέσο όρο στη βαθμολογία, όλων των μαθημάτων που διδάσκονται.