如何Django模型

Sri*_*aju 0 mysql django performance django-models

我正在用MySQL探索Django并且有一些我想讨论的事情 -

  1. 如何添加索引(在某些字段上)?我可以通过Django模型层完成吗?
  2. 如果我想将一些旧数据迁移到这些新的数据库表/模型中,我是否必须自己编写一些脚本,或者Django是否为模式映射工具提供了模式?
  3. 如果我需要更改现有Django模型的模式,那么最简单的方法是什么?我知道这取决于我的架构,但它是否像创建新列和运行一样简单python manage.py syncdb
  4. 最后,我如何描述从Django Models运行的所有查询的MySQL数据库?我正在寻找类似DEBUG=True and TEMPLATE_DEBUG=True解决方案的东西,我将在浏览器上获得查询性能(运行时等).

提前致谢...

Man*_*dan 9

如何添加索引(在某些字段上)?我可以通过Django模型层完成吗?

您可以.看看该Field.db_index选项.

如果我想将一些旧数据迁移到这些新的数据库表/模型中,我是否必须自己编写一些脚本,或者Django是否为模式映射工具提供了模式?

Django没有内置工具来进行数据迁移.要迁移现有数据,您必须编写自定义脚本.这可能是使用外部迁移工具(如南,见下文),但我没有尝试过.

最后,如果我需要更改现有Django模型的模式,那么最简单的方法是什么?我知道这取决于我的架构但是它就像创建一个新列并运行python manage.py syncdb一样简单吗?

使用迁移工具.南方是那里流行和有效的之一.还有其他人.出于多种原因,使用工具将使您的生活更加轻松.例如,syncdb不会添加新列,只会添加新表.

如何描述从Django Models运行的所有查询的MySQL数据库?我正在寻找像DEBUG = True和TEMPLATE_DEBUG =真正的解决方案,我会在浏览器上获得查询性能(运行时等).

实现此目的的方法之一是使用这个经典的Django片段.使用该片段,您可以附加有关已触发的查询的统计信息,如果DEBUG已设置,则将页面呈现到页面底部.

更新

显示调试信息的另一种方法是使用django-debug-toolbar.谢谢@ diegueus9.

  • 我建议http://github.com/robhudson/django-debug-toolbar进行配置文件sql查询. (3认同)