FAQ: Bancos de Dados e modelos¶
Como posso ver as consultas SQL que o Django está executando?¶
Verifique se o seu Django DEBUG
está setado como “True”. Em seguida, basta fazer:
>>> from django.db import connection
>>> connection.queries
[{'sql': 'SELECT polls_polls.id, polls_polls.question, polls_polls.pub_date FROM polls_polls',
'time': '0.002'}]
“connection.queries” só está disponível se nas configurações a variável DEBUG
for True
. É uma lista de dicionários em ordem de execução da querie. Cada dicionário possui o seguinte:
``sql`` -- The raw SQL statement
``time`` -- How long the statement took to execute, in seconds.
connection.queries
incluem todas as instruções SQL - INSERTs, UPDATEs, SELECTs etc. Cada vez que seu aplicativo atinge o banco de dados a consulta será gravada.
Se você estiver usando múltiplos banco de dados, você pode usar a mesma interface em cada membro de dicionário de conexões
:
>>> from django.db import connections
>>> connections['my_db_alias'].queries
Se você precisar limpar a lista de consultas manualmente em qualquer momento nas suas funções, basta chamar reset_queries()
, dessa forma:
from django.db import reset_queries
reset_queries()
Posso usar o Django em um banco de dados pré-existente?¶
Sim. Veja a documentação: Integrando com um banco de dados legado.
Como eu faço para atualizar o banco de dados, se eu fizer alterações em um modelo?¶
Dê uma olhada no suporte do Django para migrações de schema
.
Se você não se importa de limpar os dados, o utilitário manage.py
do seu projeto tem uma opção flush
para redefinir o banco de dados para o estado em que estava imediatamente depois que o migrate
foi executado.
O modelo do Django suporta chaves primárias de várias colunas?¶
Não. Apenas chaves primárias de coluna única são suportadas.
Mas isso não é o problema na prática, porque nada impede você de adicionar outras constraints (usando a opção unique_together
do modelo ou criando sua constraint diretamente no seu banco de dados), e reforçando a unicidade naquele nivel. Chaves-primárias de coluna única são necessárias para coisas tais que a interface de admin funcione; e.x: você precisa de um caminho simples para ser possivel especificar um objeto para editar ou deletar.
Django suporta banco de dados NoSQL?¶
NoSQL databases are not officially supported by Django itself. There are, however, a number of side projects and forks which allow NoSQL functionality in Django.
You can take a look on the wiki page which discusses some projects.
Como eu adiciono uma opção específica de base de dados à minha cláusula CREATE TABLE, tipo especificando MyISAM como tipo de tabela?¶
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 RunSQL
contendo a instrução ALTER TABLE
e realizando a operação que você deseja.
Por exemplo, se você está usando MySQL e quiser que suas tabelas usem a tabela do tipo MyISAM, use a seguinte instrução SQL:
ALTER TABLE myapp_mytable ENGINE=MyISAM;