{"title":"Συχνές Ερωτήσεις: Βάσεις δεδομένων και Μοντέλα","version":"2.1","locale":"el","docname":"faq/models","url":"/el/2.1/faq/models/","canonical":"https://djangodocs.dev/el/2.1/faq/models/","summary":"Πως μπορώ να δω το SQL ερώτημα που κάνει το Django στο παρασκήνιο; Link to this heading # Σιγουρευτείτε ότι η ρύθμιση του Django DEBUG είναι True . Έπειτα, τρέξτε…","html":"<h1>Συχνές Ερωτήσεις: Βάσεις δεδομένων και Μοντέλα<a class=\"heading-anchor\" href=\"#faq-databases-and-models\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<section id=\"how-can-i-see-the-raw-sql-queries-django-is-running\">\n<span id=\"faq-see-raw-sql-queries\"></span><h2>Πως μπορώ να δω το SQL ερώτημα που κάνει το Django στο παρασκήνιο;<a class=\"heading-anchor\" href=\"#how-can-i-see-the-raw-sql-queries-django-is-running\"><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-DEBUG\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEBUG</span></code></a> είναι <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>. Έπειτα, τρέξτε την εντολή python manage.py shell και γράψτε:</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=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">connection</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">connection</span><span class=\"o\">.</span><span class=\"n\">queries</span>\n<span class=\"go\">[{&#39;sql&#39;: &#39;SELECT polls_polls.id, polls_polls.question, polls_polls.pub_date FROM polls_polls&#39;,</span>\n<span class=\"go\">&#39;time&#39;: &#39;0.002&#39;}]</span>\n</code></pre></div>\n<p>Το <code class=\"docutils literal notranslate\"><span class=\"pre\">connection.queries</span></code> είναι διαθέσιμο μόνο αν η ρύθμιση <a class=\"reference internal\" href=\"/el/2.1/ref/settings/#std-setting-DEBUG\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEBUG</span></code></a> είναι <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>. Στην ουσία είναι μια λίστα από dictionaries με την σειρά που θα εκτελεστούν τα ερωτήματα. Κάθε dictionary περιέχει τα ακόλουθα:</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>``sql`` -- The raw SQL statement\n``time`` -- How long the statement took to execute, in seconds.\n</code></pre></div>\n<p>Το <code class=\"docutils literal notranslate\"><span class=\"pre\">connection.queries</span></code> περιλαμβάνει όλες τις SQL εντολές – INSERTs, UPDATES, SELECTs, κλπ. Κάθε φορά που η εφαρμογή σας (ο κώδικας, αν θέλετε) αλληλεπιδρά με τη βάση δεδομένων η εντολή θα καταγράφεται.</p>\n<p>Αν χρησιμοποιείτε <a class=\"reference internal\" href=\"/el/2.1/topics/db/multi-db/\"><span class=\"doc\">πολλαπλές βάσεις δεδομένων</span></a>, μπορείτε να χρησιμοποιείτε την ίδια μέθοδο αλλά αλλάζοντας το key του <code class=\"docutils literal notranslate\"><span class=\"pre\">connections</span></code> dictionary ούτως ώστε να ταιριάζει με το όνομα της βάσης δεδομένων σας:</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=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">connections</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">connections</span><span class=\"p\">[</span><span class=\"s1\">&#39;my_db_alias&#39;</span><span class=\"p\">]</span><span class=\"o\">.</span><span class=\"n\">queries</span>\n</code></pre></div>\n<p>Αν χρειαστεί να αδειάσετε χειροκίνητα τη λίστα με τα ερωτήματα δεν έχετε παρά να καλέσετε τη συνάρτηση <code class=\"docutils literal notranslate\"><span class=\"pre\">reset_queries()</span></code>, ως εξής:</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=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">reset_queries</span>\n<span class=\"n\">reset_queries</span><span class=\"p\">()</span>\n</code></pre></div>\n</section>\n<section id=\"can-i-use-django-with-a-pre-existing-database\">\n<h2>Μπορώ να χρησιμοποιήσω το Django με μια ήδη υπάρχουσα βάση δεδομένων;<a class=\"heading-anchor\" href=\"#can-i-use-django-with-a-pre-existing-database\"><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/howto/legacy-databases/\"><span class=\"doc\">Χρησιμοποιώντας μια υπάρχουσα βάση δεδομένων</span></a>.</p>\n</section>\n<section id=\"if-i-make-changes-to-a-model-how-do-i-update-the-database\">\n<h2>Αν κάνω αλλαγές σε κάποιο μοντέλο, πως ενημερώνω τη βάση δεδομένων;<a class=\"heading-anchor\" href=\"#if-i-make-changes-to-a-model-how-do-i-update-the-database\"><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/topics/migrations/#module-django.db.migrations\" title=\"django.db.migrations: Schema migration support for Django models\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">schema</span> <span class=\"pre\">migrations</span></code></a>.</p>\n<p>Αν δεν ενδιαφέρεστε να διαγραφούν τα δεδομένα, το <code class=\"docutils literal notranslate\"><span class=\"pre\">manage.py</span></code> έχει την επιλογή <a class=\"reference internal\" href=\"/el/2.1/ref/django-admin/#django-admin-flush\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">flush</span></code></a> η οποία επαναφέρει τη βάση δεδομένων στη κατάσταση που ήταν αμέσως μετά την εκτέλεση του <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>.</p>\n</section>\n<section id=\"do-django-models-support-multiple-column-primary-keys\">\n<h2>Υποστηρίζουν τα Django μοντέλα primary keys πολλαπλών-στηλών;<a class=\"heading-anchor\" href=\"#do-django-models-support-multiple-column-primary-keys\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Όχι. Υποστηρίζονται μόνο τα primary keys που ανήκουν σε μια στήλη.</p>\n<p>Αλλά αυτό δεν αποτελεί σοβαρό θέμα στη πράξη, επειδή κανείς δε θα σας εμποδίσει από το να προσθέσετε και άλλα constraints (χρησιμοποιώντας την επιλογή του μοντέλου <code class=\"docutils literal notranslate\"><span class=\"pre\">unique_together</span></code> ή δημιουργώντας ένα constraint απ’ ευθείας στη βάση δεδομένων), ενισχύοντας στην ουσία την μοναδικότητα σε αυτό το επίπεδο. Τα μοναδικής-στήλης primary keys χρειάζονται για να δουλέψει το admin interface του Django, π.χ χρειάζεστε έναν απλό τρόπο προκειμένου να καθορίσετε ένα object για να το επεξεργαστείτε ή να το διαγράψετε.</p>\n</section>\n<section id=\"does-django-support-nosql-databases\">\n<h2>Υποστηρίζονται οι βάσεις δεδομένων NoSQL στο Django;<a class=\"heading-anchor\" href=\"#does-django-support-nosql-databases\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Οι βάσεις δεδομένων NoSQL δεν υποστηρίζονται επισήμως από το ίδιο το Django. Υπάρχουν, ωστόσο, αρκετά projects τρίτων όπως και forks τα οποία επιτρέπουν τη λειτουργία NoSQL με το Django, όπως είναι το <a class=\"reference external\" href=\"http://django-nonrel.org/\">Django non-rel</a>.</p>\n<p>Μπορείτε, επίσης, να ρίξετε μια ματιά στη <a class=\"reference external\" href=\"https://code.djangoproject.com/wiki/NoSqlSupport\">σελίδα του wiki</a> η οποία συζητά μερικές εναλλακτικές λύσεις.</p>\n</section>\n<section id=\"how-do-i-add-database-specific-options-to-my-create-table-statements-such-as-specifying-myisam-as-the-table-type\">\n<h2>Πως προσθέτω δικές μου επιλογές στις εντολές της βάσης δεδομένων CREATE TABLE, όπως προσδιορίζοντας το MyISAM ως τύπο πίνακα;<a class=\"heading-anchor\" href=\"#how-do-i-add-database-specific-options-to-my-create-table-statements-such-as-specifying-myisam-as-the-table-type\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Προσπαθούμε να αποφύγουμε την εισαγωγή ειδικών περιπτώσεων στο κώδικα του Django όπως είναι ο τύπος του πίνακα κλπ, οι οποίες αφορούν επιλογές συγκεκριμένων βάσεων δεδομένων. Αν θέλετε να χρησιμοποιήσετε τέτοιου είδους επιλογές, δημιουργήστε ένα migration με τη λειτουργία <a class=\"reference internal\" href=\"/el/2.1/ref/migration-operations/#django.db.migrations.operations.RunSQL\" title=\"django.db.migrations.operations.RunSQL\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">RunSQL</span></code></a> η οποία θα περιέχει τις δηλώσεις του τύπου <code class=\"docutils literal notranslate\"><span class=\"pre\">ALTER</span> <span class=\"pre\">TABLE</span></code> οι οποίες θα κάνουν αυτό που θέλετε.</p>\n<p>Για παράδειγμα, αν χρησιμοποιείτε τη MySQL και θέλετε οι πίνακες σας να χρησιμοποιήσουν τον τύπο πίνακα MyISAM, χρησιμοποιήστε την ακόλουθη SQL εντολή:</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=\"n\">ALTER</span> <span class=\"n\">TABLE</span> <span class=\"n\">myapp_mytable</span> <span class=\"n\">ENGINE</span><span class=\"o\">=</span><span class=\"n\">MyISAM</span><span class=\"p\">;</span>\n</code></pre></div>\n</section>","rootId":"faq-databases-and-models","toc":[{"title":"Πως μπορώ να δω το SQL ερώτημα που κάνει το Django στο παρασκήνιο;","anchor":"how-can-i-see-the-raw-sql-queries-django-is-running","children":[]},{"title":"Μπορώ να χρησιμοποιήσω το Django με μια ήδη υπάρχουσα βάση δεδομένων;","anchor":"can-i-use-django-with-a-pre-existing-database","children":[]},{"title":"Αν κάνω αλλαγές σε κάποιο μοντέλο, πως ενημερώνω τη βάση δεδομένων;","anchor":"if-i-make-changes-to-a-model-how-do-i-update-the-database","children":[]},{"title":"Υποστηρίζουν τα Django μοντέλα primary keys πολλαπλών-στηλών;","anchor":"do-django-models-support-multiple-column-primary-keys","children":[]},{"title":"Υποστηρίζονται οι βάσεις δεδομένων NoSQL στο Django;","anchor":"does-django-support-nosql-databases","children":[]},{"title":"Πως προσθέτω δικές μου επιλογές στις εντολές της βάσης δεδομένων CREATE TABLE, όπως προσδιορίζοντας το MyISAM ως τύπο πίνακα;","anchor":"how-do-i-add-database-specific-options-to-my-create-table-statements-such-as-specifying-myisam-as-the-table-type","children":[]}],"breadcrumbs":[{"docname":"faq/index","title":"Συχνές Ερωτήσεις για το Django","url":"/el/2.1/faq/"}],"prev":{"docname":"faq/help","title":"Συχνές Ερωτήσεις: Λαμβάνοντας βοήθεια","url":"/el/2.1/faq/help/"},"next":{"docname":"faq/admin","title":"Συχνές Ερωτήσεις: Το admin site","url":"/el/2.1/faq/admin/"},"formats":{"html":"/el/2.1/faq/models/","markdown":"/el/2.1/faq/models.md","json":"/el/2.1/faq/models.json"},"source":"https://github.com/django/django/blob/stable/2.1.x/docs/faq/models.txt","official":"https://docs.djangoproject.com/el/2.1/faq/models/","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"]}