2011-03-11 52 views
3

表爲了讓Django的輸出InnoDB表在MySQL中,您可能需要Django模型,InnoDB的

  1. 輸出的所有表的InnoDB的或
  2. 選擇性地發出ALTER TABLE命令

第一個是次優的(對於查詢優勢表,MyISAM更快),第二個是痛苦和黑客。

還有其他方法嗎?

UPDATE:添加更多的清晰度,我的問題 - 我希望我的模型(或表)是Django的最初創建(使用執行syncdb)使用InnoDB引擎(不MyISAM數據)得到。在我的數據庫中,我將在MyISAM中的InnoDB &中使用一些表格。我如何在Django中做到這一點?

+0

「hackish」? Django爲你做這個確切的事情提供了一個鉤子。爲什麼這個黑客?你讀過這個了嗎? http://docs.djangoproject.com/en/1.2/howto/initial-data/#providing-initial-sql-data這是什麼問題?請更新您的問題,以澄清爲什麼這是hackish。 – 2011-03-11 11:08:35

+0

另請參閱http://docs.djangoproject.com/en/dev/ref/databases/#creating-your-tables。我不確定他們還能提供什麼; MySQL是不尋常的,因爲有兩個不同的支持引擎,並且Django試圖針對特定的後端不可知論。 – SteveMc 2011-03-11 16:38:05

回答

2

本頁面應該是很好的起點:http://code.djangoproject.com/wiki/AlterModelOnSyncDB

它記錄的方式掛接到post_syncdb鉤來動態發行ALTER SQL命令來改變發動機的表。 (請注意,這是4年前編寫的,可能需要更新到當前版本的Django)。

您應該很直接地向您的模型添加元數據,該元數據指定要爲每個表使用哪個存儲引擎。然後,您可以修改上述示例以關閉該元數據。