Często zadawane pytania: Bazy danych i modele

Jak mogę zobaczyć surowe zapytania SQL uruchamiane przez Django?

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

>>> 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`` -- The raw SQL statement
``time`` -- How long the statement took to execute, in seconds.

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:

>>> 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, po prostu wywołaj reset_queries(), w ten sposób:

from django.db import reset_queries
reset_queries()

Czy mogę użyć Django z istniejącą bazą danych?

Tak. Zobacz Integracja ze starszą bazą danych.

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

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?

Nie. Obsługiwane są jedynie jednokolumnowe klucze główne.

Ale w praktyce nie jest to problemem, ponieważ możesz dodać inne constrainty (używając opcji modelu unique_together lub tworząc constraint bezpośrednio w bazie danych) i wymusić unikalność na tym poziomie. Jednokolumnowe klucze obce są potrzebne do funkcjonowania rzeczy takich jak interfejs admina; na przykład potrzebujesz w prosty sposób móc wskazać obiekt do edycji lub usunięcia.

Czy Django obsługuje bazy danych NoSQL?

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 Djanog, jak na przykład Django non-rel.

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

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

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:

ALTER TABLE myapp_mytable ENGINE=MyISAM;
Back to Top