FAQ: Базы данных и модели ¶
Как я могу увидеть необработанные SQL-запросы, выполняемые Django? ¶
Убедитесь, что для параметра Django DEBUG
установлено значение True
. Затем сделайте это:
>>> 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
доступно только если DEBUG
стоит True
. Это список словарей в порядке выполнения запросов. Каждый словарь содержит следующее:
``sql`` -- The raw SQL statement
``time`` -- How long the statement took to execute, in seconds.
connection.queries
включает все операторы SQL - INSERT, UPDATE, SELECT и т. д. Каждый раз, когда ваше приложение обращается к базе данных, запросы регистрируются.
Если вы используете несколько баз данных , вы можете использовать один и тот же интерфейс для каждого члена словаря connections
:
>>> from django.db import connections
>>> connections['my_db_alias'].queries
Если вам нужно вручную очистить список запросов в ваших функциях в любое время, вызовите его reset_queries()
следующим образом:
from django.db import reset_queries
reset_queries()
Могу ли я использовать Django с уже существующей базой данных? ¶
Да. См. Интеграция с существующей базой данных .
Если я внесу изменения в модель, как я могу обновить базу данных? ¶
Взгляните на поддержку Django для .migrations de schéma
Если вы не возражаете против удаления данных, у утилиты manage.py
есть возможность flush
сбросить базу данных до состояния, в котором она находилась сразу после migrate
запуска.
Поддерживают ли модели Django первичные ключи для нескольких столбцов? ¶
Нет. Поддерживаются только первичные ключи для одного столбца.
Но на практике это не проблема, так как ничто не мешает вам добавлять другие ограничения (используя параметр шаблона unique_together
или создавать ограничение непосредственно в вашей базе данных) и обеспечивать соблюдение уникальность на этом уровне. Первичные ключи в одном столбце необходимы для правильного функционирования интерфейса администрирования; например, когда есть необходимость в одном значении для обозначения объекта, который нужно изменить или удалить.
Поддерживает ли Django базы данных NoSQL? ¶
Базы данных NoSQL официально не поддерживаются самим Django. Однако существует ряд внешних проектов, которые позволяют использовать функциональность NoSQL в Django.
Вы можете обратиться к странице Wiki, где представлены некоторые из этих проектов.
Как я могу добавить параметры базы данных в мои команды CREATE TABLE, например, указав MyISAM в качестве типа таблицы? ¶
Мы стараемся избегать добавления особых случаев в код Django, чтобы учесть все параметры базы данных, такие как тип таблицы и т. Д. Если вы хотите использовать один из этих вариантов, создайте миграцию с операцией, которая RunSQL
содержит инструкции, как сделать то, что вы хотите сделать.ALTER TABLE
Например, если вы используете MySQL и хотите, чтобы в ваших таблицах использовался тип таблиц MyISAM, используйте следующий код SQL:
ALTER TABLE myapp_mytable ENGINE=MyISAM;