我是Django的新手,并且只使用sqlite3作为Django中的数据库引擎。现在,我正在开发的一个应用程序变得非常大,无论是在模型的复杂性还是请求/秒。
Django支持的数据库引擎如何在性能方面进行比较?使用其中任何一个的任何陷阱?最后但并非最不重要的是,一旦你使用了一个引擎,转换到另一个引擎有多容易?谢谢!
答案 0 :(得分:33)
如果您打算使用关系数据库,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。
答案 1 :(得分:12)
MySQL和Postgres是Django社区中使用的两种最常见的数据库后端,性能相当。我同意Postgres在Django社区更受欢迎,尽管我没有任何硬数据来支持它。我当然不是故意选择MySQL,但我会说使用MySQL与Django(或一般的MySQL)有一些常见的陷阱:
Django的各种功能有一些文档在各种数据库后端不受支持:https://docs.djangoproject.com/en/1.3/ref/databases/。
答案 2 :(得分:6)
MySQL和PostgreSQL最适合Django。我强烈建议当你选择一个改变你的开发设置以便在开发时使用它(反对在开发模式下使用sqlite3和在prod中使用“真实”数据库),因为存在微妙的行为差异,这可能会引起很多麻烦未来。
答案 3 :(得分:4)
我不确定使用哪个数据库,但如果有人计划使用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