Django:用于开发的 sqlite,用于生产的 mysql? [关闭]

Posted

技术标签:

【中文标题】Django:用于开发的 sqlite,用于生产的 mysql? [关闭]【英文标题】:Django: sqlite for dev, mysql for prod? [closed] 【发布时间】:2011-01-19 08:20:53 【问题描述】:

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

【问题讨论】:

【参考方案1】:

刚从 sqlite 开始犯了这个重大错误,当我尝试使用 mysql 在生产服务器上部署时,事情并没有像我预期的那样顺利。我尝试使用各种开关进行转储数据/加载数据,但不知何故不断地抛出一个接一个的错误。帮自己一个大忙,在生产和开发中使用相同的数据库。

【讨论】:

【参考方案2】:

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

尽管 ORM 试图抽象出数据库之间的差异,但总会有某些特性基于数据库而表现不同。数据库可移植性完全是一个神话。

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

【讨论】:

“数据库可移植性是一个完整的神话”谢谢!【参考方案3】:

我支持之前的所有答案,并添加了一些明确的原因:

当您尝试存储超过该字段宽度的字符串时,MySQL 发出警告异常 - 您不会在 SQLite 中获取它们,因此不仅您的字符串在开发和生产之间会有所不同,而且程序行为也会有所不同 两个后端中的错误是不同的 - 我记得有一次我尝试使用 SQLite 进行开发,使用 MySQL 进行生产,但结果发现我在 MySQL 后端中发现了一个 SQLite 中不存在的错误。所以我为它提交了一张票并切换到 MySQL 进行测试:-)

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

Increase speed for MySQL table creation in Django?

【讨论】:

+1 - 出色的贡献。【参考方案4】:

我强烈建议在生产和开发中使用相同的数据库后端,以及介于两者之间的所有阶段。 Django 会抽象数据库的东西,但是拥有不同的环境会让您面临可怕的国际化、配置问题和令人讨厌的微小不一致,这些甚至在您将其发布之前都不会出现。

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

【讨论】:

很高兴我还没有走那条路。也许我会看看 postgres,因为我可以在 cygwin 中安装它。事实证明,让 mysql 在那里工作比它的价值更多。 为什么要打扰cygwin,mysql和postgres都有本机win32包? :) 我知道这有点晚了,但是在 Django 中使用 XAMPP 一直是一个梦想——对我来说混合得很好。我在使用 MySQLdb 时遇到了一些问题,但我四处搜索并找到了已编译的库。干杯,所有! :-)【参考方案5】:

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

【讨论】:

【参考方案6】:

您为什么要这样做?

SQLite 尚不支持存储过程。 SQLite 是typeless。运行 MySQL 时可能会遇到很多类型转换问题。 SQLite 还不支持 RIGHT 连接。

【讨论】:

这些都不会影响我对 Django 的任何需求;虽然你是对的。

以上是关于Django:用于开发的 sqlite,用于生产的 mysql? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

dotnet ef 用于开发/生产的单独数据库提供程序

AWS Elastic Beanstalk 需要 SQLite 3.8.3 或更高版本才能用于 Django 应用程序

为啥 django test --keep-db 适用于 postgres 数据库但不适用于默认 sqlite3

Django 调试视图,用于管理员的生产环境

Django REST 框架:令牌身份验证不适用于生产

Django基本配置