任何环境都使用相同的数据库

#翻译自《TwoScoops of Django Best Practices For Django 1.8》 2.1小节


正文

    在本地开发使用SQLite3数据库,而在产品中使用PostgreSQL(或者MySQL)是一种常见的开发陷阱。


    当我们在开发和产品中使用不同的数据库时,我们遭遇到如下几种常见的错误。

    2.1.1 你不能直接抓取一份你的产品数据库的拷贝到本地

    当你的产品使用的数据库与你本地开发所使用的数据库不同时,你不能直接抓取一份你的产品数据库的拷贝却在本地检查这些数据。

    当然,你能从产品中生成一份SQL的信息转储并且将它导入到你的本地数据库,但那并不意味着你有完全相同的拷贝,因为这些拷贝

    已经经历了导出可导入这两个过程。


    2.1.2 不同的数据库有不同的Field类型和限制

    始终记住,不同的数据库处理各类field数据的方式是不同的。Django的ORM打算协调这些不同,但是它能够做到的很有限。

    举个例子来讲,某些人使用SQLite3作为本地开发数据库而使用PostgreSQL作为产品数据库,认为Django的ORM给他们有借口

    不去考虑这些不同。最后,问题出现了,因为SQLite3使用动态的、弱类型代替强类型。

    当然,Django的ORM拥有允许让你的代码能够以一种更直观的方式与SQLite3交互的优点,但是开发中form和model的验证错误将不能

    被捕捉到(即使是在测试中)。知道代码运行到了产品的服务器上。你可能能顺利无阻的在本地存储长字符串,因为SQLite3不关注这个。

    但是当到了产品中,你的PostgreSQL或者MySQL数据库将抛出限制错误,而这个错误从来没在你本地出现过。而且如果你不在本地安装

    一个相同的数据库,你将一直在错误的复现上浪费时间

    大多数问题在项目运行到一个强类型的数据库(例如PostgreSQL和MySQL)之前通常不能被发现。

    Tip:大多数开发者更倾向于在所有的环境中使用PostgreSQL。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值