为什么django社区鼓励在Mysql上使用Postgres?

为什么django社区鼓励在Mysql上使用Postgres?,django,Django,Django社区似乎鼓励使用Postgres,我知道在一个大项目中你可能不想使用SQLite之类的,但我不知道他们为什么不那么喜欢Mysql 举个简单的例子——Djangobook第9页: 我们自己也很喜欢PostgreSQL,原因超出了本书的范围,所以我们先提到它。然而,所有这些引擎都将与Django一起工作 Postgres的名字总是与Django联系在一起——就像Mysql总是与php联系在一起一样,我自己从来没有使用过PostgreSQL,所以我不能说它比Mysql有什么优势。 但从我收

Django社区似乎鼓励使用Postgres,我知道在一个大项目中你可能不想使用SQLite之类的,但我不知道他们为什么不那么喜欢Mysql

举个简单的例子——Djangobook第9页:

我们自己也很喜欢PostgreSQL,原因超出了本书的范围,所以我们先提到它。然而,所有这些引擎都将与Django一起工作


Postgres的名字总是与Django联系在一起——就像Mysql总是与php联系在一起一样,我自己从来没有使用过PostgreSQL,所以我不能说它比Mysql有什么优势。 但从我收集的信息来看,PostgreSQL开箱即用更好地支持事务处理。如果您使用MySQL,更改是您将使用MyISAM作为存储引擎,它不支持事务

也许Django开发人员只是厌倦了处理事务不起作用的bug报告,但问题是由MyISAM而不是Django造成的

南方开发人员(Django最常用的数据库模式迁移框架)显然也不喜欢MySQL,这条消息表明我经常看到MySQL:

! Since you have a database that does not support running
! schema-altering statements in transactions, we have had to
! leave it in an interim state between migrations.
[...]
! The South developers regret this has happened, and would
! like to gently persuade you to consider a slightly
! easier-to-deal-with DBMS.

对于这种沉默,最好的答案可能来自那些编写框架的人

但从中你可以得到:

默认情况下,Django在首次使用数据库连接时启动事务,并在请求/响应处理结束时提交结果。在这方面,PostgreSQL后端的操作通常与任何其他Django后端相同

Django拥有强大的横切控制,使用强大的
免费
数据库管理系统(具有强大的横切控制)是一个优势

此外,Mysql的早期版本(Mysql 5.0之前)存在一些完整性问题。另外,MySql的fast存储引擎
MyISAM
不支持外键和转换。因此,使用MyISAM有重要的缺点,即它的优点


还有一个维基。它很旧,但很好

我总是尽可能地使用Postgres,部分原因是它的成熟,也因为PostGIS扩展为数据库添加了空间数据功能。即使一开始我不想在我的应用程序中使用空间数据,但如果数据库支持的话,添加空间数据要容易得多,而不是在后期删除MySQL并用PostGIS替换它

我认为MySQL现在有一个空间扩展,所以您现在可以在其中执行空间操作。但博士后就是这么做的,而且已经做了很多年了


或者我可以花美元购买Oracle Spatial,我想…

我不想引起争论,只是想知道这是否有原因如果我找到一个好的理由,我会开始使用PostgresEven,尽管我不熟悉Python、Django或PostgreSQL,我找不到任何一个不应该使用MySQL的原因。如果您想要对datetimes提供毫秒或时区支持,那么就不应该使用MySQL。