FAQ: Database e modelli

Come posso vedere le query in puro SQL mentre Django sta funzionando?

Assicurati che l’impostazione Django DEBUG sia impostata a True. Quindi fai questo:

>>> 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 è disponibile solo se DEBUG è True. E” una lista di dizionari ordinati come l’esecuzione delle query. Ogni dizionario ha i seguenti:

``sql`` -- The raw SQL statement
``time`` -- How long the statement took to execute, in seconds.

connection.queries include tutti gli statement SQL – INSERT, UPDATES, SELECT, etc. Ogni volta la tua applicazione tocca il database, la query viene registrata.

Se stai usando multiple databases, puoi utilizzare la stessa interfaccia per ogni membro del dizionario delle connessioni:

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

Se hai bisogno di cancellare manualmente l’elenco delle query in qualsiasi punto delle tue funzioni, chiama reset_queries(), in questo modo:

from django.db import reset_queries
reset_queries()

Can I use Django with a preexisting database?

Sì. Vedi Integrating with a legacy database.

Se faccio dei cambiamenti a un modello, come posso aggiornare il database?

Dai uno sguardo al supporto di Django per schema migrations.

Se non ti preoccupa cancellare i dati, l’utility manage.py del tuo progetto ha una opzione flush per resettare il database allo stato in cui era immediatamente dopo l’esecuzione di migrate .

I modelli di Django supportano le chiavi primarie multicolonna?

No, solo le chiavi primarie a colonna singola sono supportate.

Ma questo in pratica non è un problema, perché non c’è nulla che ti impedisca di aggiungere altri vincoli (usando l’opzione unique_together o creando il vincolo direttamente nel tuo database) e di imporre l’unicità a quel livello. Le chiavi primarie a colonna singola sono necessarie per far funzionare cose come l’interfaccia di amministrazione; ad esempio, è necessario un singolo valore per specificare un oggetto da modificare o eliminare.

Django supporta i database NoSQL?

I database NoSQL non sono ufficialmente supportati da Django stesso. Esistono, tuttavia, numerosi progetti terzi e fork che consentono la funzionalità NoSQL in Django.

Si Può dare un’occhiata a: the wiki page che discute di alcuni progetti.

Come aggiungo opzioni specifiche del database ai mie statement CREATE TABLE, come ad esempio per specificare il tipo della tabella come MyISAM?

Noi cerchiamo di evitare di aggiungere casi speciali nel codice di Django per permettere tutte le opzioni specifiche dei database, come il tipo di tabella, etc. Se vuoi usare alcune di queste opzioni, crea una migrazione RunSQL con una operazione che contiene gli statement ALTER TABLE che fanno ciò che richiedi.

Per esempio, se stai usando MySQL e vuoi che le tue tabelle usino il tipo MyISAM, usa il seguente codice SQL:

ALTER TABLE myapp_mytable ENGINE=MyISAM;
Back to Top