{"title":"Ενσωματώνοντας το Django με μια legacy database","version":"2.1","locale":"el","docname":"howto/legacy-databases","url":"/el/2.1/howto/legacy-databases/","canonical":"https://djangodocs.dev/el/2.1/howto/legacy-databases/","summary":"Ενώ το Django είναι κατάλληλο για να αναπτύσσετε καινούργιες εφαρμογές, είναι δυνατόν να το ενσωματώσετε με legacy databases. Το Django περιλαμβάνει μερικές…","html":"<h1>Ενσωματώνοντας το Django με μια legacy database<a class=\"heading-anchor\" href=\"#integrating-django-with-a-legacy-database\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Ενώ το Django είναι κατάλληλο για να αναπτύσσετε καινούργιες εφαρμογές, είναι δυνατόν να το ενσωματώσετε με legacy databases. Το Django περιλαμβάνει μερικές λειτουργίες για να αυτοματοποιήσει όσο γίνεται αυτή τη διαδικασία. Με άλλα λόγια, σκοπός αυτής της διαδικασίας είναι: έχετε μια υπάρχουσα βάση δεδομένων για την οποία δεν υπάρχουν Django μοντέλα. Θέλετε, λοιπόν, αντί να ξαναχτίσετε τη βάση αυτή γράφοντας τα μοντέλα σας που θα αντικατοπτρίζουν τη βάση να κάνετε την αντίστροφη διαδικασία, ήτοι να χρησιμοποιήσετε την υπάρχουσα βάση για να φτιάξετε τα μοντέλα σας.</p>\n<p>Αυτό το άρθρο προϋποθέτει ότι γνωρίζετε τα βασικά του Django, όπως έχουν καλυφθεί στον <a class=\"reference internal\" href=\"/el/2.1/intro/tutorial01/\"><span class=\"doc\">οδηγό μας</span></a>.</p>\n<p>Αφού έχετε εγκαταστήσει και σετάρει το Django, θα ακολουθήσετε την παρακάτω γενική διαδικασία για να ενσωματώσετε το Django με μια ήδη υπάρχουσα βάση δεδομένων.</p>\n<section id=\"give-django-your-database-parameters\">\n<h2>Δώστε στο Django τις παραμέτρους της βάσης δεδομένων σας<a class=\"heading-anchor\" href=\"#give-django-your-database-parameters\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Θα χρειαστεί να πείτε στο Django ποιες είναι οι παράμετροι για σύνδεση με την βάση δεδομένων καθώς και το όνομα της βάσης. Αυτό το κάνετε επεξεργάζοντας τη ρύθμιση <a class=\"reference internal\" href=\"/el/2.1/ref/settings/#std-setting-DATABASES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DATABASES</span></code></a> και ορίζοντας τιμές στα ακόλουθα keys για την σύνδεση <code class=\"docutils literal notranslate\"><span class=\"pre\">'default'</span></code>:</p>\n<ul class=\"simple\">\n<li><p><a class=\"reference internal\" href=\"/el/2.1/ref/settings/#std-setting-NAME\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">NAME</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/el/2.1/ref/settings/#std-setting-DATABASE-ENGINE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">ENGINE</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/el/2.1/ref/settings/#std-setting-USER\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">USER</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/el/2.1/ref/settings/#std-setting-PASSWORD\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">PASSWORD</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/el/2.1/ref/settings/#std-setting-HOST\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">HOST</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/el/2.1/ref/settings/#std-setting-PORT\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">PORT</span></code></a></p></li>\n</ul>\n</section>\n<section id=\"auto-generate-the-models\">\n<h2>Αυτόματη δημιουργία των μοντέλων<a class=\"heading-anchor\" href=\"#auto-generate-the-models\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Το Django έρχεται με μια λειτουργία-εντολή με το όνομα <a class=\"reference internal\" href=\"/el/2.1/ref/django-admin/#django-admin-inspectdb\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">inspectdb</span></code></a> η οποία μπορεί να δημιουργήσει μοντέλα κοιτάζοντας μια υπάρχουσα βάση δεδομένων. Μπορείτε να δείτε την έξοδο αυτής της εντολής τρέχοντας την:</p>\n<div class=\"code-block\" data-language=\"bash\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span>python<span class=\"w\"> </span>manage.py<span class=\"w\"> </span>inspectdb\n</code></pre></div>\n<p>Σώστε την έξοδο σε ένα αρχείο χρησιμοποιώντας τη στάνταρντ ανακατεύθυνση εξόδου του Unix:</p>\n<div class=\"code-block\" data-language=\"bash\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span>python<span class=\"w\"> </span>manage.py<span class=\"w\"> </span>inspectdb<span class=\"w\"> </span>&gt;<span class=\"w\"> </span>models.py\n</code></pre></div>\n<p>Αυτή η λειτουργία προορίζεται ως μια συντόμευση, όχι ως παραγωγή οριστικών μοντέλων. Δείτε στο <a class=\"reference internal\" href=\"/el/2.1/ref/django-admin/#django-admin-inspectdb\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">εγχειρίδιο</span> <span class=\"pre\">του</span> <span class=\"pre\">inspectdb</span></code></a> για περισσότερες πληροφορίες.</p>\n<p>Αφού κάνετε τυχόν εκκαθαρίσεις-αναδιατάξεις στα μοντέλα σας, ονομάστε το αρχείο <code class=\"docutils literal notranslate\"><span class=\"pre\">models.py</span></code> και βάλτε το μέσα στο φάκελο της εφαρμογής σας. Κατόπιν, προσθέστε την εφαρμογή αυτή στη ρύθμιση <a class=\"reference internal\" href=\"/el/2.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a>.</p>\n<p>Από προεπιλογή, η εντολή <a class=\"reference internal\" href=\"/el/2.1/ref/django-admin/#django-admin-inspectdb\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">inspectdb</span></code></a> δημιουργεί αδιαχείριστα μοντέλα (unmanaged models). Δηλαδή, το attribute μέσα στην κλάση <code class=\"docutils literal notranslate\"><span class=\"pre\">Meta</span></code> του μοντέλου <code class=\"docutils literal notranslate\"><span class=\"pre\">managed</span> <span class=\"pre\">=</span> <span class=\"pre\">False</span></code>, λέει στο Django να μην διαχειριστεί τη δημιουργία, επεξεργασία και διαγραφή αυτού του πίνακα:</p>\n<div class=\"code-block\" data-language=\"bash\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>class<span class=\"w\"> </span>Person<span class=\"o\">(</span>models.Model<span class=\"o\">)</span>:\n<span class=\"w\">    </span><span class=\"nv\">id</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span>models.IntegerField<span class=\"o\">(</span><span class=\"nv\">primary_key</span><span class=\"o\">=</span>True<span class=\"o\">)</span>\n<span class=\"w\">    </span><span class=\"nv\">first_name</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span>models.CharField<span class=\"o\">(</span><span class=\"nv\">max_length</span><span class=\"o\">=</span><span class=\"m\">70</span><span class=\"o\">)</span>\n<span class=\"w\">    </span>class<span class=\"w\"> </span>Meta:\n<span class=\"w\">       </span><span class=\"nv\">managed</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span>False\n<span class=\"w\">       </span><span class=\"nv\">db_table</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s1\">&#39;CENSUS_PERSONS&#39;</span>\n</code></pre></div>\n<p>Αν θέλετε να επιτρέψετε στο Django να διαχειριστεί τον κύκλο ζωής αυτού του πίνακα, θα χρειαστεί να αλλάξετε το attribute <a class=\"reference internal\" href=\"/el/2.1/ref/models/options/#django.db.models.Options.managed\" title=\"django.db.models.Options.managed\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">managed</span></code></a> σε <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> (ή απλά αφαιρέστε το επειδή η προεπιλεγμένη τιμή του είναι <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>).</p>\n</section>\n<section id=\"install-the-core-django-tables\">\n<h2>Εγκατάσταση των βασικών πινάκων Django<a class=\"heading-anchor\" href=\"#install-the-core-django-tables\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Επόμενο βήμα, είναι να τρέξετε την διαχειριστική εντολή <a class=\"reference internal\" href=\"/el/2.1/ref/django-admin/#django-admin-migrate\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">migrate</span></code></a> για την εγκατάσταση τυχόν επιπλέον database records όπως τα admin permissions και τα content types:</p>\n<div class=\"code-block\" data-language=\"bash\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span>python<span class=\"w\"> </span>manage.py<span class=\"w\"> </span>migrate\n</code></pre></div>\n</section>\n<section id=\"test-and-tweak\">\n<h2>Δοκιμές και αλλαγές<a class=\"heading-anchor\" href=\"#test-and-tweak\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Αυτά είναι τα βασικά βήματα – από δω και μπρος θα θέλετε να πειράξετε τα μοντέλα που δημιούργησε το Django για εσάς για να δουλεύουν όπως ακριβώς θέλετε. Προσπαθήστε να προσπελάσετε τα δεδομένα σας μέσω του Django database API και επίσης προσπαθήσετε να επεξεργαστείτε τα objects σας μέσω του Django admin site και επεξεργαστείτε το αρχείο του μοντέλου σας καταλλήλως.</p>\n</section>","rootId":"integrating-django-with-a-legacy-database","toc":[{"title":"Δώστε στο Django τις παραμέτρους της βάσης δεδομένων σας","anchor":"give-django-your-database-parameters","children":[]},{"title":"Αυτόματη δημιουργία των μοντέλων","anchor":"auto-generate-the-models","children":[]},{"title":"Εγκατάσταση των βασικών πινάκων Django","anchor":"install-the-core-django-tables","children":[]},{"title":"Δοκιμές και αλλαγές","anchor":"test-and-tweak","children":[]}],"breadcrumbs":[{"docname":"howto/index","title":"Οδηγοί «Πως-να»","url":"/el/2.1/howto/"}],"prev":{"docname":"howto/jython","title":"Το Django πάνω στην Jython","url":"/el/2.1/howto/jython/"},"next":{"docname":"howto/outputting-csv","title":"Εξάγοντας αρχεία CSV με το Django","url":"/el/2.1/howto/outputting-csv/"},"formats":{"html":"/el/2.1/howto/legacy-databases/","markdown":"/el/2.1/howto/legacy-databases.md","json":"/el/2.1/howto/legacy-databases.json"},"source":"https://github.com/django/django/blob/stable/2.1.x/docs/howto/legacy-databases.txt","official":"https://docs.djangoproject.com/el/2.1/howto/legacy-databases/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10"],"inLocales":["en","zh-hans","fr","ja","id","pt-br","ko","es","el","pl"]}