FAQ: Database e modelli

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

Make sure your Django DEBUG setting is set to True. Then do this:

>>> 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 is only available if DEBUG is True. It’s a list of dictionaries in order of query execution. Each dictionary has the following:

  • 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.

If you are using multiple databases, you can use the same interface on each member of the connections dictionary:

>>> 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()

Posso usare Django con un database preesistente?

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.

For example, if you’re using MySQL and want your tables to use the MyISAM table type, use the following SQL:

ALTER TABLE myapp_mytable ENGINE=MyISAM;
Back to Top