FAQ:数据库和模型 — Django 文档
FAQ:数据库和模型
我该如何在Django运行的过程中看到SQL查询?
确保您的 Django :setting:`DEBUG` 设置设置为 True
。 然后,只需这样做:
connection.queries
仅在 :setting:`DEBUG` 为 True
时可用。 它是按查询执行顺序排列的字典列表。 每本词典都有以下内容:
connection.queries
包括所有 SQL 语句——插入、更新、选择等。 每次您的应用访问数据库时,都会记录查询。
如果你使用多个数据库,你可以在connections
字典的每个成员上使用相同的接口:
如果您需要在函数中的任何时候手动清除查询列表,只需调用 reset_queries()
,如下所示:
如果我对一个模型做了改动,我该如何去更新数据库?
看看 Django 对 模式迁移 的支持。
如果您不介意清除数据,您项目的 manage.py
实用程序有一个 :djadmin:`flush` 选项可以将数据库重置为 :djadmin 之后的状态:`migrate` 已执行。
Django 支持多列主键吗?
不。 仅支持单列主键。
但这在实践中不是问题,因为没有什么可以阻止您添加其他约束(使用 unique_together
模型选项或直接在数据库中创建约束),并在该级别强制执行唯一性。 管理界面等工作需要单列主键; 例如,您需要一种能够指定要编辑或删除的对象的简单方法。
Django 支持 NoSQL 数据库吗?
Django 本身并不正式支持 NoSQL 数据库。 但是,有许多辅助项目和分支允许在 Django 中使用 NoSQL 功能。
您可以查看 维基页面 ,其中讨论了一些项目。
如何将特定于数据库的选项添加到我的 CREATE TABLE 语句中,例如将 MylSAM 指定为表类型?
我们尽量避免在 Django 代码中添加特殊情况以适应所有特定于数据库的选项,例如表类型等。 如果您想使用这些选项中的任何一个,请使用包含 ALTER TABLE
语句的 RunSQL 操作创建迁移,这些语句可以执行您想要执行的操作。
例如,如果您使用 MySQL 并希望您的表使用 MyISAM 表类型,请使用以下 SQL: