Django Модели, таблицы в InnoDB - PullRequest
3 голосов
/ 11 марта 2011

Для того, чтобы Django мог выводить таблицы innodb в MySQL, вам необходимо либо

  1. вывести ВСЕ таблицы в виде innodb, либо
  2. выборочно выполнять команды изменения таблицы

Первый является неоптимальным (MyISAM быстрее для таблиц с доминирующим запросом), а второй - боль и взлом.

Существуют ли другие способы?

ОБНОВЛЕНИЕ: Добавление большей ясности к моему вопросу - я хочу, чтобы мои модели (или таблицы), которые Django создавал изначально (используя syncdb) дляиспользовать движок INNODB (не MyISAM).В моей базе данных у меня будут некоторые таблицы в InnoDB и некоторые в MyISAM.Как я могу сделать это в Django?

1 Ответ

2 голосов
/ 13 марта 2011

Эта страница должна быть хорошей отправной точкой: http://code.djangoproject.com/wiki/AlterModelOnSyncDB

Она описывает способ подключения к post_syncdb ловушке для динамической выдачи ALTER команд SQL для изменения механизма таблиц.(Обратите внимание, что это было написано 4 года назад, и, возможно, потребуется обновить его до текущей версии Django).

Вам должно быть просто добавить метаданные в свои модели, которые указывают, какой механизм хранения использоватьдля каждого стола.Затем вы можете изменить приведенный выше пример, чтобы отключить эти метаданные.

...