# Django 5.2.8 documentation

# FRÅGOR OCH SVAR: Databaser och modeller

## Hur kan jag se de råa SQL-frågorna som Django kör?

Se till att din Django `DEBUG`-inställning är inställd på `True`. Gör sedan så här:

    >>> 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` är endast tillgänglig om `DEBUG` är `True`. Det är en lista över ordböcker i frågeexekveringsordning. Varje ordbok har följande:

- `sql` - Den obearbetade SQL-satsen

- `time` - Hur lång tid det tog att utföra uttalandet, i sekunder.

`connection.queries` inkluderar alla SQL-satser - INSERT, UPDATES, SELECT, etc. Varje gång din app träffar databasen kommer frågan att registreras.

Om du använder flera databaser kan du använda samma gränssnitt för varje medlem i ordlistan connections`:

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

Om du behöver rensa frågelistan manuellt vid någon tidpunkt i dina funktioner, anropa `reset_queries()`, så här:

    from django.db import reset_queries

    reset_queries()

## Kan jag använda Django med en redan befintlig databas?

Ja, se Integrering med en äldre databas.

## Om jag gör ändringar i en modell, hur uppdaterar jag då databasen?

Ta en titt på Djangos stöd för `schemamigreringar`.

Om du inte har något emot att rensa data har verktyget `manage.py` i ditt projekt ett alternativ `flush`` som återställer databasen till det tillstånd den hade omedelbart efter att `migrate`` kördes.

## Har Django-modeller stöd för primärnycklar med flera kolumner?

Nej, endast primärnycklar med en kolumn stöds.

Men det här är inget problem i praktiken, eftersom det inte finns något som hindrar dig från att lägga till andra begränsningar (med hjälp av modellalternativet `unique_together` eller genom att skapa begränsningen direkt i din databas) och genomdriva unikheten på den nivån. Primärnycklar med en enda kolumn behövs för att t.ex. administratörsgränssnittet ska fungera; du behöver t.ex. ett enda värde för att ange ett objekt som ska redigeras eller tas bort.

## Har Django stöd för NoSQL-databaser?

NoSQL-databaser stöds inte officiellt av Django själv. Det finns dock ett antal sidoprojekt och förgreningar som tillåter NoSQL-funktionalitet i Django.

Du kan ta en titt på wikisidan där några projekt diskuteras.

## Hur lägger jag till databasspecifika alternativ till mina CREATE TABLE-satser, till exempel att ange MyISAM som tabelltyp?

Vi försöker undvika att lägga till specialfall i Django-koden för att tillgodose alla databasspecifika alternativ som tabelltyp etc. Om du vill använda något av dessa alternativ skapar du en migrering med en `RunSQL` operation som innehåller `ALTER TABLE`-satser som gör vad du vill göra.

Om du t.ex. använder MySQL och vill att dina tabeller ska använda tabelltypen MyISAM använder du följande SQL:

    ALTER TABLE myapp_mytable ENGINE=MyISAM;