models.txt 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. =========================
  2. FAQ: Databases and models
  3. =========================
  4. .. _faq-see-raw-sql-queries:
  5. How can I see the raw SQL queries Django is running?
  6. ====================================================
  7. Make sure your Django :setting:`DEBUG` setting is set to ``True``.
  8. Then do this:
  9. .. code-block:: pycon
  10. >>> from django.db import connection
  11. >>> connection.queries
  12. [{'sql': 'SELECT polls_polls.id, polls_polls.question, polls_polls.pub_date FROM polls_polls',
  13. 'time': '0.002'}]
  14. ``connection.queries`` is only available if :setting:`DEBUG` is ``True``.
  15. It's a list of dictionaries in order of query execution. Each dictionary has
  16. the following:
  17. * ``sql`` - The raw SQL statement
  18. * ``time`` - How long the statement took to execute, in seconds.
  19. ``connection.queries`` includes all SQL statements -- INSERTs, UPDATES,
  20. SELECTs, etc. Each time your app hits the database, the query will be recorded.
  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. .. code-block:: pycon
  24. >>> from django.db import connections
  25. >>> connections["my_db_alias"].queries
  26. If you need to clear the query list manually at any point in your functions,
  27. call ``reset_queries()``, like this::
  28. from django.db import reset_queries
  29. reset_queries()
  30. Can I use Django with a preexisting database?
  31. =============================================
  32. Yes. See :doc:`Integrating with a legacy database </howto/legacy-databases>`.
  33. If I make changes to a model, how do I update the database?
  34. ===========================================================
  35. Take a look at Django's support for :mod:`schema migrations
  36. <django.db.migrations>`.
  37. If you don't mind clearing data, your project's ``manage.py`` utility has a
  38. :djadmin:`flush` option to reset the database to the state it was in
  39. immediately after :djadmin:`migrate` was executed.
  40. Do Django models support multiple-column primary keys?
  41. ======================================================
  42. No. Only single-column primary keys are supported.
  43. But this isn't an issue in practice, because there's nothing stopping you from
  44. adding other constraints (using the ``unique_together`` model option or
  45. creating the constraint directly in your database), and enforcing the
  46. uniqueness at that level. Single-column primary keys are needed for things such
  47. as the admin interface to work; e.g., you need a single value to specify
  48. an object to edit or delete.
  49. Does Django support NoSQL databases?
  50. ====================================
  51. NoSQL databases are not officially supported by Django itself. There are,
  52. however, a number of side projects and forks which allow NoSQL functionality in
  53. Django.
  54. You can take a look on `the wiki page`_ which discusses some projects.
  55. .. _the wiki page: https://code.djangoproject.com/wiki/NoSqlSupport
  56. How do I add database-specific options to my CREATE TABLE statements, such as specifying MyISAM as the table type?
  57. ==================================================================================================================
  58. We try to avoid adding special cases in the Django code to accommodate all the
  59. database-specific options such as table type, etc. If you'd like to use any of
  60. these options, create a migration with a
  61. :class:`~django.db.migrations.operations.RunSQL` operation that contains
  62. ``ALTER TABLE`` statements that do what you want to do.
  63. For example, if you're using MySQL and want your tables to use the MyISAM table
  64. type, use the following SQL:
  65. .. code-block:: sql
  66. ALTER TABLE myapp_mytable ENGINE=MyISAM;