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;

Copyright ©2020 All rights reserved