Почему в Django не работает ручной откат транзакций?

Моя среда - python2.7.3 и django1.4.1

Я использую MySQL с таблицами MyISAM.

мой тестовый код:

from django.core.management import setup_environ
from myproject import settings
setup_environ(settings)

from myproject.models import *
from django.db import transaction

@transaction.commit_manually
def test_trans():
    r=tab1.objects.get(no="1")
    r.value=100
    r.save()
    transaction.rollback()#I already rollback here, but data is still being updated to the database

def main():
    try:
        test_trans()
    except:
        pass
if __name__ == '__main__':
    main()

Кажется, что transaction.rollback() не откатывает мою транзакцию, так как данные все еще обновляются в базе данных.

0
nl ja de
Скажите, пожалуйста, какую базу данных вы используете. MySQL? И если это MySQL, какой движок таблицы вы используете (например, MyISAM/InnoDB)
добавлено автор Steve Mayne, источник
MyISAM или InnoDB? Или другой?
добавлено автор Steve Mayne, источник
Я обновил свой ответ, чтобы другим мог помочь этот вопрос.
добавлено автор Steve Mayne, источник
да, я использую MySQL
добавлено автор user1934017, источник
это MyISAM, возможно, я знаю, почему, большое спасибо
добавлено автор user1934017, источник

1 ответы

Если вы используете MySQL с MyISAM, он не поддерживает транзакции. Измените свои таблицы на InnoDB, если вы хотите использовать эту функцию.

Я добавляю следующее к моим settings.py для этого автоматически (при вызове syncdb):

DATABASE_OPTIONS = {"init_command": "SET storage_engine=INNODB"}
2
добавлено
Python
Python
7 654 участник(ов)

Уютный чат для профессионалов, занимающихся поиском питоньих мудростей. Как не получить бан: https://t.me/ru_python/577926

Python beginners
Python beginners
4 449 участник(ов)

Вопросы про Python для чайников. Cпам и троллинг неприемлем. Не злоупотребляйте стикерами. Частозадаваемые вопросы: https://github.com/ru-python-beginners/faq/blob/master/README.md Статистика тут: https://grstats.me/chat/x4qym2k5uvfkr3al6at7

Django
Django
1 931 участник(ов)

Полезная информация и правила: https://github.com/django-ru/faq Вакансии и резюме: @django_jobs Пофлудить идём сюда: @django_flood Статистика чата: combot.org/chat/-1001063854692

pro.python
pro.python
1 090 участник(ов)

Сообщество разработчиков под Python Создатель: @rodgelius

Rude Python
Rude Python
971 участник(ов)

Python без „девочек”, здесь матерятся и унижают Django. Not gay friendly. Правила: t.me/rudepython/114107 @rudepython | t.me/rudepython

django_jobs
django_jobs
916 участник(ов)

Поиск и предложения работы (Django) Правила: https://t.me/django_jobs/4 Вакансии с тегом #job улетают в канал @django_jobs_board Вопросы к @amureki Основной чат @pydjango

Django
Django
733 участник(ов)

Веб-фреймворк для перфекционистов с дедлайнами. Наша группа на vk: https://vk.com/django_framework В Discord: https://discord.me/django_framework по всем вопросам @MechanisM

rupython
rupython
509 участник(ов)

Группа создана с целью оперативного получения ответов на возникающие вопросы по разработке на яп python, смежные темы, а также человеческого общения. Приветствую!

Python-programming
Python-programming
266 участник(ов)

Чат группы вконтакте https://vk.com/python_community

django flood
django flood
71 участник(ов)

Флудилка джангистов Пока без правил