Ενσωματώνοντας το 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 και επεξεργαστείτε το αρχείο του μοντέλου σας καταλλήλως.