Django模型,InnoDB中的表

3 投票
1 回答
1391 浏览
提问于 2025-04-16 13:29

为了让Django在MySQL中输出innodb表,你需要做以下两件事之一:

  1. 把所有表都设置为innodb,或者
  2. 选择性地发出修改表的命令。

第一种方法不是最优的(因为对于查询比较多的表,MyISAM会更快),而第二种方法又麻烦又像是个小技巧。

还有其他方法吗?

更新:我想更清楚地说明我的问题——我希望Django最初创建的模型(或表,使用syncdb命令时)使用INNODB引擎(而不是MyISAM)。在我的数据库中,我会有一些表是InnoDB,还有一些是MyISAM。我该如何在Django中做到这一点?

1 个回答

2

这个页面是个不错的起点:http://code.djangoproject.com/wiki/AlterModelOnSyncDB

它介绍了一种方法,可以在post_syncdb这个钩子里动态地发出ALTER SQL命令,来改变表的存储引擎。(注意,这篇文章是四年前写的,可能需要更新到当前的Django版本)。

你应该可以很简单地给你的模型添加一些元数据,来指定每个表使用哪个存储引擎。然后你可以根据这些元数据来修改上面的例子。

撰写回答