Make sure your Django DEBUG setting is set to True.
Then do this:
>>> 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 доступны только при включённой отладке. Это обычный словарь выполняемых запросов, каждый из которых содержит следующее:
``sql`` -- The raw SQL statement
``time`` -- How long the statement took to execute, in seconds.
connection.queries включает в себя все SQL запросы: INSERT, UPDATE, SELECT и тд. Каждый раз, когда приложение обращается к БД, запросы протоколируются.
Если вы используете multiple databases, то для каждого словаря connections есть свои интерфейсы.
>>> from django.db import connections
>>> connections['my_db_alias'].queries
If you need to clear the query list manually at any point in your functions,
call reset_queries(), like this:
from django.db import reset_queries
reset_queries()
Да, подробнее здесь - Integrating with a legacy database
Посмотрите на поддержку миграций структуры данных в Django.
Если вам не обязательно сохранять все данные, то для manage.py есть команда flush, которая сбрасывает состояние БД на момент непосредственно после выполнения migrate.
Нет, поддерживаются только главные ключи, состоящие из одного столбца.
But this isn’t an issue in practice, because there’s nothing stopping you from
adding other constraints (using the unique_together model option or
creating the constraint directly in your database), and enforcing the
uniqueness at that level. Single-column primary keys are needed for things such
as the admin interface to work; e.g., you need a single value to specify
an object to edit or delete.
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.
Мы стараемся избегать добавления таких специфичных настроек в код Django. Если же это действительно нужно, создайте миграцию с RunSQL, который будет содержать выражение ALTER TABLE для тонкой настройки.
Например, при использовании MySQL для указания типа таблицы MyISAM используйте следующий SQL:
ALTER TABLE myapp_mytable ENGINE=MyISAM;
июн. 04, 2020