# Django 5.2.9 - dokumentacja

# 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` – 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`:

    >>> 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:

    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 jednej wartości, by 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 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?

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;