Проблема вставки из скрипта Python в базу данных MySQL с движком innondb - PullRequest
3 голосов
/ 13 апреля 2011

Я сталкиваюсь с проблемой, когда пытаюсь добавить данные из скрипта python в базу данных mysql с движком InnonDB, он отлично работает с движком myisam базы данных mysql. Но проблема с механизмом myisam состоит в том, что он не поддерживает внешние ключи, поэтому мне придется добавлять дополнительный код в каждое место, где я хочу вставлять / удалять записи в базе данных.

Кто-нибудь знает, почему InnonDB не работает со скриптами Python и возможными решениями этой проблемы ??

Ответы [ 2 ]

6 голосов
/ 13 апреля 2011

InnoDB является транзакционным.Вам нужно вызвать connection.commit () после вставки / удаления / обновления.

Edit: вы можете вызвать connection.autocommit (True), чтобы включить автокоммит.

4 голосов
/ 14 апреля 2011

Python DB API отключает автокоммит по умолчанию

Вставлено из Google (первая страница, второй результат)

MySQL :: MySQL 5.0 Справочное руководство ::13.2.8 InnoDB ... По умолчанию MySQL запускает сеанс для каждого нового соединения с автокоммитом ... dev.mysql.com /.../ innodb -action-model.html

Однако

Очевидно, Python запускает MySQL в режиме NON-autocommit, см .:
http://www.kitebird.com/articles/pydbapi.html

Из статьи:

Метод commit () объекта соединения фиксирует любые ожидающие изменения в текущей транзакции, чтобы сделать их постоянными в базе данных.В DB-API соединения начинаются с режим автоматической фиксации отключен , поэтому перед отключением необходимо вызвать commit (), иначе изменения могут быть потеряны.

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

Как включить режим автоматической фиксации в MySQL Python DB-API?

Удачи.

...