{"title":"FAQ: Bancos de Dados e modelos","version":"5.0","locale":"pt-br","docname":"faq/models","url":"/pt-br/5.0/faq/models/","canonical":"https://djangodocs.dev/pt-br/5.0/faq/models/","summary":"Como posso ver as consultas SQL que o Django está executando? Link para este cabeçalho # Assegure-se que sua configuração do Django DEBUG está configurada para True…","html":"<h1>FAQ: Bancos de Dados e modelos<a class=\"heading-anchor\" href=\"#faq-databases-and-models\"><span class=\"visually-hidden\">Link para este cabeçalho</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>Como posso ver as consultas SQL que o Django está executando?<a class=\"heading-anchor\" href=\"#how-can-i-see-the-raw-sql-queries-django-is-running\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Assegure-se que sua configuração do Django <a class=\"reference internal\" href=\"/pt-br/5.0/ref/settings/#std-setting-DEBUG\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEBUG</span></code></a> está configurada para <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>. Então faça isso:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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=\"Python console 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>“connection.queries” só está disponível se <a class=\"reference internal\" href=\"/pt-br/5.0/ref/settings/#std-setting-DEBUG\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEBUG</span></code></a> for <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>. É uma lista de dicionários em ordem de execução da querie. Cada dicionário possui o seguinte:</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">sql</span></code> - A instrução SQL bruta</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">time</span></code> - Quanto tempo a instrução levou para ser executada, em segundos.</p></li>\n</ul>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">connection.queries</span></code> incluem todas as instruções SQL -  INSERTs, UPDATEs, SELECTs etc. Cada vez que seu aplicativo atinge o banco de dados a consulta será gravada.</p>\n<p>Se você estiver usando <a class=\"reference internal\" href=\"/pt-br/5.0/topics/db/multi-db/\"><span class=\"doc\">multiple databases</span></a>, você pode usar a mesma interface em cada membro do <code class=\"docutils literal notranslate\"><span class=\"pre\">dicionário</span></code> de conexões:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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=\"Python console 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=\"s2\">&quot;my_db_alias&quot;</span><span class=\"p\">]</span><span class=\"o\">.</span><span class=\"n\">queries</span>\n</code></pre></div>\n<p>Se você precisar limpar uma lista de consulta em qualquer ponto das suas funções, chame o método <code class=\"docutils literal notranslate\"><span class=\"pre\">reset_queries()</span></code>, dessa maneira:</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\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-preexisting-database\">\n<h2>Posso usar o Django com um banco de dados preexistente?<a class=\"heading-anchor\" href=\"#can-i-use-django-with-a-preexisting-database\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Sim. Veja a documentação: <a class=\"reference internal\" href=\"/pt-br/5.0/howto/legacy-databases/\"><span class=\"doc\">Integrando com um banco de dados legado</span></a>.</p>\n</section>\n<section id=\"if-i-make-changes-to-a-model-how-do-i-update-the-database\">\n<h2>Como eu faço para atualizar o banco de dados, se eu fizer alterações em um modelo?<a class=\"heading-anchor\" href=\"#if-i-make-changes-to-a-model-how-do-i-update-the-database\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Dê uma olhada no suporte do Django para <a class=\"reference internal\" href=\"/pt-br/5.0/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\">migrações</span> <span class=\"pre\">de</span> <span class=\"pre\">schema</span></code></a>.</p>\n<p>Se você não se importa de limpar os dados, o utilitário <code class=\"docutils literal notranslate\"><span class=\"pre\">manage.py</span></code> do seu projeto tem uma opção <a class=\"reference internal\" href=\"/pt-br/5.0/ref/django-admin/#django-admin-flush\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">flush</span></code></a> para redefinir o banco de dados para o estado em que estava imediatamente depois que o <a class=\"reference internal\" href=\"/pt-br/5.0/ref/django-admin/#django-admin-migrate\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">migrate</span></code></a> foi executado.</p>\n</section>\n<section id=\"do-django-models-support-multiple-column-primary-keys\">\n<h2>O modelo do Django suporta chaves primárias de várias colunas?<a class=\"heading-anchor\" href=\"#do-django-models-support-multiple-column-primary-keys\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Não. Apenas chaves primárias de coluna única são suportadas.</p>\n<p>Mas isso não é um problema na prática, porque não há nada que o impeça de adicionar outras restrições (usando a opção de modelo `` unique_together`` ou criar a restrição diretamente no seu banco de dados) e impor a exclusividade nesse nível. Chaves primárias de coluna única são necessárias para que coisas como a interface de administrador funcionem; por exemplo, você precisa de um único valor para especificar um objeto para editar ou excluir.</p>\n</section>\n<section id=\"does-django-support-nosql-databases\">\n<h2>Django suporta banco de dados NoSQL?<a class=\"heading-anchor\" href=\"#does-django-support-nosql-databases\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Os bancos de dados NoSQL não são oficialmente suportados pelo Django. Há, entretanto, um número amplo de projetos e forks que permitem as funcionalidades do NoSQL no Django.</p>\n<p>Você pode olhar na página wiki - que discute alguns projetos.</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>Como eu adiciono uma opção específica de base de dados à minha cláusula CREATE TABLE, tipo especificando MyISAM como tipo de tabela?<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 para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Nós tentamos evitar ao adicionar casos excepcionais ao código do Django para acomodar todas as opções específicas de cada banco de dados, como: tipo de tabela e etc. . Se você quiser usar qualquer uma destas opções específicas crie uma rotina de migração com a classe <a class=\"reference internal\" href=\"/pt-br/5.0/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> contendo a instrução <code class=\"docutils literal notranslate\"><span class=\"pre\">ALTER</span> <span class=\"pre\">TABLE</span></code> e realizando a operação que você deseja.</p>\n<p>Por exemplo, se você está usando MySQL e quiser que suas tabelas usem a tabela do tipo MyISAM, use a seguinte instrução SQL:</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</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=\"SQL code\"><code><span class=\"k\">ALTER</span><span class=\"w\"> </span><span class=\"k\">TABLE</span><span class=\"w\"> </span><span class=\"n\">myapp_mytable</span><span class=\"w\"> </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":"Como posso ver as consultas SQL que o Django está executando?","anchor":"how-can-i-see-the-raw-sql-queries-django-is-running","children":[]},{"title":"Posso usar o Django com um banco de dados preexistente?","anchor":"can-i-use-django-with-a-preexisting-database","children":[]},{"title":"Como eu faço para atualizar o banco de dados, se eu fizer alterações em um modelo?","anchor":"if-i-make-changes-to-a-model-how-do-i-update-the-database","children":[]},{"title":"O modelo do Django suporta chaves primárias de várias colunas?","anchor":"do-django-models-support-multiple-column-primary-keys","children":[]},{"title":"Django suporta banco de dados NoSQL?","anchor":"does-django-support-nosql-databases","children":[]},{"title":"Como eu adiciono uma opção específica de base de dados à minha cláusula CREATE TABLE, tipo especificando MyISAM como tipo de tabela?","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 - Perguntas e dúvidas frequentes.","url":"/pt-br/5.0/faq/"}],"prev":{"docname":"faq/help","title":"FAQ: Obtendo ajuda","url":"/pt-br/5.0/faq/help/"},"next":{"docname":"faq/admin","title":"FAQ: O admin","url":"/pt-br/5.0/faq/admin/"},"formats":{"html":"/pt-br/5.0/faq/models/","markdown":"/pt-br/5.0/faq/models.md","json":"/pt-br/5.0/faq/models.json"},"source":"https://github.com/django/django/blob/stable/5.0.x/docs/faq/models.txt","official":"https://docs.djangoproject.com/pt-br/5.0/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","1.9"],"inLocales":["en","zh-hans","fr","ja","id","it","pt-br","ko","es","el","pl"]}