{"title":"How to integrate Django with a legacy database","version":"5.1","locale":"el","docname":"howto/legacy-databases","url":"/el/5.1/howto/legacy-databases/","canonical":"https://djangodocs.dev/el/5.1/howto/legacy-databases/","summary":"Ενώ το Django είναι κατάλληλο για να αναπτύσσετε καινούργιες εφαρμογές, είναι δυνατόν να το ενσωματώσετε με legacy databases.","html":"<h1>How to integrate Django with a legacy database<a class=\"heading-anchor\" href=\"#how-to-integrate-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/5.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/5.1/ref/settings/#std-setting-DATABASES\"><code class=\"xref std std-setting docutils literal notranslate\">DATABASES</code></a> και ορίζοντας τιμές στα ακόλουθα keys για την σύνδεση <code class=\"docutils literal notranslate\">'default'</code>:</p>\n<ul class=\"simple\">\n<li><p><a class=\"reference internal\" href=\"/el/5.1/ref/settings/#std-setting-NAME\"><code class=\"xref std std-setting docutils literal notranslate\">NAME</code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/el/5.1/ref/settings/#std-setting-DATABASE-ENGINE\"><code class=\"xref std std-setting docutils literal notranslate\">ENGINE</code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/el/5.1/ref/settings/#std-setting-USER\"><code class=\"xref std std-setting docutils literal notranslate\">USER</code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/el/5.1/ref/settings/#std-setting-PASSWORD\"><code class=\"xref std std-setting docutils literal notranslate\">PASSWORD</code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/el/5.1/ref/settings/#std-setting-HOST\"><code class=\"xref std std-setting docutils literal notranslate\">HOST</code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/el/5.1/ref/settings/#std-setting-PORT\"><code class=\"xref std std-setting docutils literal notranslate\">PORT</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 comes with a utility called <a class=\"reference internal\" href=\"/el/5.1/ref/django-admin/#django-admin-inspectdb\"><code class=\"xref std std-djadmin docutils literal notranslate\">inspectdb</code></a> that can create models\nby introspecting an existing database. You can view the output by running this\ncommand:</p>\n<div class=\"code-block\" data-language=\"shell\"><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>$ python manage.py inspectdb\n</code></pre></div>\n<p>Save this as a file by using standard Unix output redirection:</p>\n<div class=\"code-block\" data-language=\"shell\"><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>$ python manage.py inspectdb &gt; models.py\n</code></pre></div>\n<p>Αυτή η λειτουργία προορίζεται ως μια συντόμευση, όχι ως παραγωγή οριστικών μοντέλων. Δείτε στο <a class=\"reference internal\" href=\"/el/5.1/ref/django-admin/#django-admin-inspectdb\"><code class=\"xref std std-djadmin docutils literal notranslate\">εγχειρίδιο του inspectdb</code></a> για περισσότερες πληροφορίες.</p>\n<p>Αφού κάνετε τυχόν εκκαθαρίσεις-αναδιατάξεις στα μοντέλα σας, ονομάστε το αρχείο <code class=\"docutils literal notranslate\">models.py</code> και βάλτε το μέσα στο φάκελο της εφαρμογής σας. Κατόπιν, προσθέστε την εφαρμογή αυτή στη ρύθμιση <a class=\"reference internal\" href=\"/el/5.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\">INSTALLED_APPS</code></a>.</p>\n<p>Από προεπιλογή, η εντολή <a class=\"reference internal\" href=\"/el/5.1/ref/django-admin/#django-admin-inspectdb\"><code class=\"xref std std-djadmin docutils literal notranslate\">inspectdb</code></a> δημιουργεί αδιαχείριστα μοντέλα (unmanaged models). Δηλαδή, το attribute μέσα στην κλάση <code class=\"docutils literal notranslate\">Meta</code> του μοντέλου <code class=\"docutils literal notranslate\">managed = False</code>, λέει στο Django να μην διαχειριστεί τη δημιουργία, επεξεργασία και διαγραφή αυτού του πίνακα:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</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=\"Code code\"><code><span class=\"k\">class</span> <span class=\"nc\">Person</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    <span class=\"nb\">id</span> <span class=\"o\">=</span> models<span class=\"o\">.</span>IntegerField<span class=\"p\">(</span>primary_key<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n    first_name <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">70</span><span class=\"p\">)</span>\n\n    <span class=\"k\">class</span> <span class=\"nc\">Meta</span><span class=\"p\">:</span>\n        managed <span class=\"o\">=</span> <span class=\"kc\">False</span>\n        db_table <span class=\"o\">=</span> <span class=\"s2\">&quot;CENSUS_PERSONS&quot;</span>\n</code></pre></div>\n<p>If you do want to allow Django to manage the table’s lifecycle, you’ll need to\nchange the <a class=\"reference internal\" href=\"/el/5.1/ref/models/options/#django.db.models.Options.managed\" title=\"django.db.models.Options.managed\"><code class=\"xref py py-attr docutils literal notranslate\">managed</code></a> option above to <code class=\"docutils literal notranslate\">True</code>\n(or remove it because <code class=\"docutils literal notranslate\">True</code> is its default value).</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>Next, run the <a class=\"reference internal\" href=\"/el/5.1/ref/django-admin/#django-admin-migrate\"><code class=\"xref std std-djadmin docutils literal notranslate\">migrate</code></a> command to install any extra needed database\nrecords such as admin permissions and content types:</p>\n<div class=\"code-block\" data-language=\"shell\"><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>$ python manage.py 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":"how-to-integrate-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":"How-to guides","url":"/el/5.1/howto/"}],"prev":{"docname":"howto/initial-data","title":"How to provide initial data for models","url":"/el/5.1/howto/initial-data/"},"next":{"docname":"howto/custom-model-fields","title":"How to create custom model fields","url":"/el/5.1/howto/custom-model-fields/"},"formats":{"html":"/el/5.1/howto/legacy-databases/","markdown":"/el/5.1/howto/legacy-databases.md","json":"/el/5.1/howto/legacy-databases.json"},"source":"https://github.com/django/django/blob/stable/5.1.x/docs/howto/legacy-databases.txt","official":"https://docs.djangoproject.com/el/5.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","it","pt-br","ko","es","el","pl"]}