Django:sqlite for dev,mysql for prod?

时间:2010-02-21 13:45:09

标签: python mysql django sqlite dev-to-production

快速提问:在开发Django项目时使用sqlite并在生产服务器上使用MySQL是个好主意吗?

6 个答案:

答案 0 :(得分:22)

我强烈建议在开发中使用与生成相同的数据库后端,以及介于两者之间的所有阶段。 Django将抽象数据库的东西,但是拥有不同的环境会让你容易受到可怕的国际化,配置问题和令人讨厌的微小不一致的影响,直到你推送它们才会出现。

就个人而言,我会坚持使用mysql,但我从未使用过postgres:)

答案 1 :(得分:9)

我先回答所有先前的答案,并添加一些明确的理由:

  • 当你尝试将字符串的字符串长度存储时,MySQL会发出警告异常 - 你不会在SQLite中获取它们,所以不仅你的字符串在开发和生产之间会有所不同,而且程序行为也是如此
  • 两个后端中的错误都不同 - 我记得曾经我尝试过SQL和Dev用于生产,但事实证明我发现了MySQL后端的一个错误,这个错误在SQLite中没有出现。所以我为它提交了一张票并转而使用MySQL进行测试: - )

你甚至可以尝试在速度方面与SQLite竞争,看看我对其他问题的回答:

Increase speed for MySQL table creation in Django?

答案 2 :(得分:8)

你为什么要那样做?

  • SQLite还没有存储过程支持。
  • SQLite是typeless。运行MySQL时,最终可能会出现很多类型转换问题。
  • 此外,SQLite还不支持RIGHT join。

答案 3 :(得分:7)

在所有环境中使用相同的数据库。

尽管ORM试图抽象数据库之间的差异,但总会存在某些基于数据库的行为不同的功能。数据库可移植性是一个完整的神话。

另外,对于你将永远在生产中使用的代码路径进行测试和开发似乎非常疯狂,不是吗?

答案 4 :(得分:3)

简而言之,不;除非你想不必要地加倍开发时间。

答案 5 :(得分:3)

刚开始使用sqlite时出现了这个重大错误,当我尝试使用mysql在生产服务器上进行部署时,事情并没有像我预期的那样顺利。我尝试了各种开关的dumpdata / loaddata,但不知何故不断抛出错误。做一件大事,并在生产和开发中使用相同的数据库。