关于python:哪个数据库引擎可供Django应用选择?

Which database engine to choose for Django app?

我是Django的新手,仅在Django中将sqlite3用作数据库引擎。现在,无论是从模型的复杂性还是从请求/秒的angular来看,我正在处理的应用程序之一都变得越来越大。

Django在性能方面如何比较Django支持的数据库引擎?使用它们有任何陷阱吗?最后但并非最不重要的一点是,一旦使用了一段时间,切换到另一个引擎有多容易?谢谢!


如果要使用关系数据库,则在Django社区中最流行的似乎是PostgreSQL。这是我个人的最爱。但是,MongoDB在Python / Django社区中似乎也很受欢迎(不过,我从未用它做过一个项目)。 MySQL上也有很多成功的项目。但是,我个人更喜欢PostgreSQL 9.0或9.1。希望这会有所帮助。

编辑:这篇文章我做得并不出色。只是想添加一些其他注意事项。

对于绝大多数网站,MySQL或PostgreSQL都可以正常工作。两者都有优点和缺点。我建议您使用google" MySQL vs. PostgreSQL"进行搜索(在撰写本文时,我的搜索量超过3,000,000)。以下是进行评估的一些技巧。

  • 强烈偏爱较新的文章。尝试确保将MySQL 5.5与PostgreSQL 9.0或9.1进行比较。
  • MySQL让您选择存储引擎。 IMO,苹果与苹果的比较接近是InnoDB与Postgres。
  • 请记住,您可能不需要InnoDB或Postgres的所有功能。您还应该查看其他一些存储引擎。
  • 此外,如果您打算在系统中使用任何触发器,则MySQL和InnoDB会存在一些与它们和ACID遵从性有关的非常讨厌的错误。这是第一个,这是另一个。您可能不需要此功能,只需了解它即可。

    可能对您有所作为的最后一件事是,使用PostgreSQL,您可以使用Python编写db函数。这是此文档的链接。


    MySQL和Postgres是Django社区中使用的两个最常见的数据库后端,它们具有可比的性能。我同意Postgres在Django社区中更受欢迎,尽管我没有任何硬性数字可以证明这一点。我当然不是要选择MySQL,但我想说将MySQL与Django(或一般而言,MySQL)一起使用时会遇到一些常见的陷阱:

  • MyISAM不支持交易(不再是5.5.5中的默认设置)
  • 日期时间不支持毫秒
  • 日期时间不支持时区
  • 唯一字符字段必须少于255个字符
  • 默认排序规则不区分大小写
  • 一些关于Django各种功能的文档在各种数据库后端中不受支持:https://docs.djangoproject.com/en/1.3/ref/databases/。


    我不确定要使用哪个数据库,但是如果有人打算使用MongoDB,请注意,它仅适用于py2而不适用于py3。

    参考链接:

    使用Django 1.10,mongodb和Python 3.4.3进行项目设置

    在Windows上使用django mongodb引擎使用django设置MongoDB时出错

    设置MongoDB Django


    MySQL和PostgreSQL与Django搭配使用效果最佳。我强烈建议您选择一个,在开发时更改开发设置以使用它(与在开发人员模式下使用sqlite3和在生产中使用"真实"数据库相对),因为存在细微的行为差异,这可能会引起很多麻烦。未来。