Django模型,InnoDB中的表
为了让Django在MySQL中输出innodb表,你需要做以下两件事之一:
- 把所有表都设置为innodb,或者
- 选择性地发出修改表的命令。
第一种方法不是最优的(因为对于查询比较多的表,MyISAM会更快),而第二种方法又麻烦又像是个小技巧。
还有其他方法吗?
更新:我想更清楚地说明我的问题——我希望Django最初创建的模型(或表,使用syncdb命令时)使用INNODB引擎(而不是MyISAM)。在我的数据库中,我会有一些表是InnoDB,还有一些是MyISAM。我该如何在Django中做到这一点?
1 个回答
2
这个页面是个不错的起点:http://code.djangoproject.com/wiki/AlterModelOnSyncDB
它介绍了一种方法,可以在post_syncdb
这个钩子里动态地发出ALTER
SQL命令,来改变表的存储引擎。(注意,这篇文章是四年前写的,可能需要更新到当前的Django版本)。
你应该可以很简单地给你的模型添加一些元数据,来指定每个表使用哪个存储引擎。然后你可以根据这些元数据来修改上面的例子。