【发布时间】:2012-03-21 08:39:53
【问题描述】:
我是 Django 新手,只在 Django 中使用 sqlite3 作为数据库引擎。现在,我正在开发的其中一个应用程序变得越来越大,无论是在模型复杂度还是每秒请求数方面。
Django 支持的数据库引擎在性能方面如何比较?使用它们有什么陷阱吗?最后但并非最不重要的一点是,一旦您使用了一段时间,切换到另一个引擎有多容易?
【问题讨论】:
标签: python database django sqlite
我是 Django 新手,只在 Django 中使用 sqlite3 作为数据库引擎。现在,我正在开发的其中一个应用程序变得越来越大,无论是在模型复杂度还是每秒请求数方面。
Django 支持的数据库引擎在性能方面如何比较?使用它们有什么陷阱吗?最后但并非最不重要的一点是,一旦您使用了一段时间,切换到另一个引擎有多容易?
【问题讨论】:
标签: python database django sqlite
如果你打算使用关系数据库,Django 社区中最流行的似乎是 PostgreSQL。这是我个人的最爱。但是,MongoDB 似乎在 Python/Django 社区中也越来越受欢迎(不过,我从来没有用它做过项目)。在 MySQL 上也有很多成功的项目。但是,我个人更喜欢 PostgreSQL 9.0 或 9.1。希望这会有所帮助。
编辑:我在这篇文章中做得并不好。只是想补充几个注意事项。
对于绝大多数网站,MySQL 或 PostgreSQL 都可以正常工作。两者都有自己的长处和短处。我建议你谷歌“MySQL vs. PostgreSQL” 这个搜索有很多点击量(在写这篇文章的时候,我得到了超过 3,000,000)。以下是进行评估的一些提示。
此外,如果您计划在系统中使用任何触发器,那么 MySQL 和 InnoDB 中存在一些与它们和 ACID 合规性相关的非常严重的错误。这里是the first one,这里是another one。您可能不需要此功能,请注意它。
可能对您产生影响的最后一件事是,使用 PostgreSQL,您可以使用 Python 编写 db 函数。这是一个link to the docs。
【讨论】:
MySQL 和 Postgres 是 Django 社区中最常用的两个数据库后端,并且具有相当的性能。我同意 Postgres 在 Django 社区中更受欢迎,尽管我没有任何确切的数据来支持这一点。我当然不是要选择 MySQL,但我想说的是,在将 MySQL 与 Django(或一般的 MySQL)一起使用时存在一些常见的陷阱:
有一些关于 Django 各种特性的文档在各种数据库后端上不受支持:https://docs.djangoproject.com/en/1.3/ref/databases/。
【讨论】:
我也不确定要使用哪个数据库,但如果有人打算使用 MongoDB,请注意它仅适用于 py2 而不适用于 py3。
参考链接:
Project Setup with Django 1.10, mongodb and Python 3.4.3
Error while setting up MongoDB with django using django mongodb engine on windows
【讨论】:
MySQL 和 PostgreSQL 最适合 Django。我强烈建议您选择一个更改开发设置以在开发时使用它(反对在开发模式下使用 sqlite3 和在 prod 中使用“真实”数据库),因为存在细微的行为差异,可能会导致很多令人头疼的问题未来。
【讨论】: