Ενσωματώνοντας το Django με μια legacy database

Ενώ το Django είναι κατάλληλο για να αναπτύσσετε καινούργιες εφαρμογές, είναι δυνατόν να το ενσωματώσετε με legacy databases. Το Django περιλαμβάνει μερικές λειτουργίες για να αυτοματοποιήσει όσο γίνεται αυτή τη διαδικασία. Με άλλα λόγια, σκοπός αυτής της διαδικασίας είναι: έχετε μια υπάρχουσα βάση δεδομένων για την οποία δεν υπάρχουν Django μοντέλα. Θέλετε, λοιπόν, αντί να ξαναχτίσετε τη βάση αυτή γράφοντας τα μοντέλα σας που θα αντικατοπτρίζουν τη βάση να κάνετε την αντίστροφη διαδικασία, ήτοι να χρησιμοποιήσετε την υπάρχουσα βάση για να φτιάξετε τα μοντέλα σας.

Αυτό το άρθρο προϋποθέτει ότι γνωρίζετε τα βασικά του Django, όπως έχουν καλυφθεί στον οδηγό μας.

Αφού έχετε εγκαταστήσει και σετάρει το Django, θα ακολουθήσετε την παρακάτω γενική διαδικασία για να ενσωματώσετε το Django με μια ήδη υπάρχουσα βάση δεδομένων.

Δώστε στο Django τις παραμέτρους της βάσης δεδομένων σας

Θα χρειαστεί να πείτε στο Django ποιες είναι οι παράμετροι για σύνδεση με την βάση δεδομένων καθώς και το όνομα της βάσης. Αυτό το κάνετε επεξεργάζοντας τη ρύθμιση DATABASES και ορίζοντας τιμές στα ακόλουθα keys για την σύνδεση 'default':

Αυτόματη δημιουργία των μοντέλων

Το Django έρχεται με μια λειτουργία-εντολή με το όνομα inspectdb η οποία μπορεί να δημιουργήσει μοντέλα κοιτάζοντας μια υπάρχουσα βάση δεδομένων. Μπορείτε να δείτε την έξοδο αυτής της εντολής τρέχοντας την:

$ python manage.py inspectdb

Σώστε την έξοδο σε ένα αρχείο χρησιμοποιώντας τη στάνταρντ ανακατεύθυνση εξόδου του Unix:

$ python manage.py inspectdb > models.py

Αυτή η λειτουργία προορίζεται ως μια συντόμευση, όχι ως παραγωγή οριστικών μοντέλων. Δείτε στο εγχειρίδιο του inspectdb για περισσότερες πληροφορίες.

Αφού κάνετε τυχόν εκκαθαρίσεις-αναδιατάξεις στα μοντέλα σας, ονομάστε το αρχείο models.py και βάλτε το μέσα στο φάκελο της εφαρμογής σας. Κατόπιν, προσθέστε την εφαρμογή αυτή στη ρύθμιση INSTALLED_APPS.

Από προεπιλογή, η εντολή inspectdb δημιουργεί αδιαχείριστα μοντέλα (unmanaged models). Δηλαδή, το attribute μέσα στην κλάση Meta του μοντέλου managed = False, λέει στο Django να μην διαχειριστεί τη δημιουργία, επεξεργασία και διαγραφή αυτού του πίνακα:

class Person(models.Model):
    id = models.IntegerField(primary_key=True)
    first_name = models.CharField(max_length=70)
    class Meta:
       managed = False
       db_table = 'CENSUS_PERSONS'

Αν θέλετε να επιτρέψετε στο Django να διαχειριστεί τον κύκλο ζωής αυτού του πίνακα, θα χρειαστεί να αλλάξετε το attribute managed σε True (ή απλά αφαιρέστε το επειδή η προεπιλεγμένη τιμή του είναι True).

Εγκατάσταση των βασικών πινάκων Django

Επόμενο βήμα, είναι να τρέξετε την διαχειριστική εντολή migrate για την εγκατάσταση τυχόν επιπλέον database records όπως τα admin permissions και τα content types:

$ python manage.py migrate

Δοκιμές και αλλαγές

Αυτά είναι τα βασικά βήματα – από δω και μπρος θα θέλετε να πειράξετε τα μοντέλα που δημιούργησε το Django για εσάς για να δουλεύουν όπως ακριβώς θέλετε. Προσπαθήστε να προσπελάσετε τα δεδομένα σας μέσω του Django database API και επίσης προσπαθήσετε να επεξεργαστείτε τα objects σας μέσω του Django admin site και επεξεργαστείτε το αρχείο του μοντέλου σας καταλλήλως.

Back to Top