FAQ: Database e modelliLink to this heading

Come posso vedere le query in puro SQL mentre Django sta funzionando?Link to this heading

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

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

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

Code
from django.db import reset_queries

reset_queries()

Posso usare Django con un database preesistente?Link to this heading

Sì. Vedi Integrating with a legacy database.

Se faccio dei cambiamenti a un modello, come posso aggiornare il database?Link to this heading

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?Link to this heading

Partially. See Composite primary keys.

Django supporta i database NoSQL?Link to this heading

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?Link to this heading

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:

SQL
ALTER TABLE myapp_mytable ENGINE=MyISAM;