Często zadawane pytania: Bazy danych i modeleLink to this heading

Jak mogę zobaczyć surowe zapytania SQL uruchamiane przez Django?Link to this heading

Upewnij się, że Twoje ustawienie Django DEBUG jest ustawione na True. Następnie zrób to:

Python console
>>> 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 jest dostępne tylko jeśli DEBUG jest ustawione na True. Jest to lista słowników w kolejności wykonania zapytania. Każdy słownik zawiera:

  • sql – surowe zapytanie SQL

  • time – ile czasu trwało wykonanie polecenia, w sekundach.

connections.queries zawiera wszystkie operacje SQL – INSERT-y, UPDATE-y, SELECT-y itp. Każde zapytanie twojej aplikacji do bazy danych zostanie zapisane.

Jeśli używasz wielu baz danych, możesz użyć tego samego interfejsu na każdym elemencie słownika connections:

Python console
>>> from django.db import connections
>>> connections["my_db_alias"].queries

Jeśli potrzebujesz wyczyścić ręcznie listę kwerend w dowolnym momencie w swoich funkcjach, wywołaj reset_queries(), w ten sposób:

Code
from django.db import reset_queries

reset_queries()

Czy mogę użyć Django z istniejącą bazą danych?Link to this heading

Tak. Zobacz Integracja ze starszą bazą danych.

Jeśli dokonam zmian w modelu, jak mogę zaktualizować bazę danych?Link to this heading

Zajrzyj do pomocy Django na temat migracji schematu.

Jeśli chcesz wyczyścić dane, narzędzie manage.py twojego projektu ma opcję flush, służącą do resetowania bazy danych do stanu, w którym była bezpośrednio po wykonaniu migrate.

Czy modele Django wspierają wielokolumnowe klucze główne?Link to this heading

Partially. See Composite primary keys.

Czy Django obsługuje bazy danych NoSQL?Link to this heading

NoSQL-owe bazy danych nie są oficjalnie wspierane przez Django jako takie. Jednakże jest kilka projektów pobocznych oraz forków, które wprowadzają funkcjonalność NoSQL w Django.

Możesz spojrzeć na stronę wiki, która omawia niektóre projekty.

Jak mogę dodać do wyrażenia CREATE TABLE specyficzne opcje dla bazy danych takie jak np. wskazanie typu tabeli jako MyISAM?Link to this heading

Staramy się nie dodawać do Django obsługi specyficznych dla danej bazy danych opcji, np. typu tabeli itp. Jeśli chcesz użyć takich parametrów, stwórz migrację przy użyciu klasy RunSQL zawierającej polecenie ALTER TABLE, które możesz dowolnie skonfigurować.

Na przykład, jeśli korzystasz z MySQL-a i chcesz skorzystać z tabel typu MyISAM, użyj następującego zapytania SQL:

SQL
ALTER TABLE myapp_mytable ENGINE=MyISAM;