models.txt 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. FAQ: Databases and models
  2. =========================
  3. .. _faq-see-raw-sql-queries:
  4. How can I see the raw SQL queries Django is running?
  5. ----------------------------------------------------
  6. Make sure your Django :setting:`DEBUG` setting is set to ``True``.
  7. Then, just do this::
  8. >>> from django.db import connection
  9. >>> connection.queries
  10. [{'sql': 'SELECT polls_polls.id, polls_polls.question, polls_polls.pub_date FROM polls_polls',
  11. 'time': '0.002'}]
  12. ``connection.queries`` is only available if :setting:`DEBUG` is ``True``.
  13. It's a list of dictionaries in order of query execution. Each dictionary has
  14. the following::
  15. ``sql`` -- The raw SQL statement
  16. ``time`` -- How long the statement took to execute, in seconds.
  17. ``connection.queries`` includes all SQL statements -- INSERTs, UPDATES,
  18. SELECTs, etc. Each time your app hits the database, the query will be recorded.
  19. Note that the SQL recorded here may be :ref:`incorrectly quoted under SQLite
  20. <sqlite-connection-queries>`.
  21. If you are using :doc:`multiple databases</topics/db/multi-db>`, you can use the
  22. same interface on each member of the ``connections`` dictionary::
  23. >>> from django.db import connections
  24. >>> connections['my_db_alias'].queries
  25. If you need to clear the query list manually at any point in your functions,
  26. just call ``reset_queries()``, like this::
  27. from django.db import reset_queries
  28. reset_queries()
  29. Can I use Django with a pre-existing database?
  30. ----------------------------------------------
  31. Yes. See :doc:`Integrating with a legacy database </howto/legacy-databases>`.
  32. If I make changes to a model, how do I update the database?
  33. -----------------------------------------------------------
  34. Take a look at Django's support for :mod:`schema migrations
  35. <django.db.migrations>`.
  36. If you don't mind clearing data, your project's ``manage.py`` utility has a
  37. :djadmin:`flush` option to reset the database to the state it was in
  38. immediately after :djadmin:`migrate` was executed.
  39. Do Django models support multiple-column primary keys?
  40. ------------------------------------------------------
  41. No. Only single-column primary keys are supported.
  42. But this isn't an issue in practice, because there's nothing stopping you from
  43. adding other constraints (using the ``unique_together`` model option or
  44. creating the constraint directly in your database), and enforcing the
  45. uniqueness at that level. Single-column primary keys are needed for things such
  46. as the admin interface to work; e.g., you need a simple way of being able to
  47. specify an object to edit or delete.
  48. How do I add database-specific options to my CREATE TABLE statements, such as specifying MyISAM as the table type?
  49. ------------------------------------------------------------------------------------------------------------------
  50. We try to avoid adding special cases in the Django code to accommodate all the
  51. database-specific options such as table type, etc. If you'd like to use any of
  52. these options, create an :ref:`SQL initial data file <initial-sql>` that
  53. contains ``ALTER TABLE`` statements that do what you want to do. The initial
  54. data files are executed in your database after the ``CREATE TABLE`` statements.
  55. For example, if you're using MySQL and want your tables to use the MyISAM table
  56. type, create an initial data file and put something like this in it::
  57. ALTER TABLE myapp_mytable ENGINE=MyISAM;
  58. As explained in the :ref:`SQL initial data file <initial-sql>` documentation,
  59. this SQL file can contain arbitrary SQL, so you can make any sorts of changes
  60. you need to make.