Невозможно отключить автосообщение в скрипте с помощью Django ORM
У меня есть сценарий командной строки, который использует сервер Django ORM и MySQL. Я хочу отключить автосообщение и выполнить вручную. Для жизни я не могу заставить это работать. Ниже приведена версия скрипта. Строка вставляется в тестовую таблицу каждый раз, когда я запускаю ее, и я получаю это предупреждение от MySQL: «Некоторые таблицы, не связанные с транзакциями, нельзя отменить».
#!/usr/bin/python import os import sys django_dir = os.path.abspath(os.path.normpath(os.path.join(os.path.dirname(__file__), '..'))) sys.path.append(django_dir) os.environ['DJANGO_DIR'] = django_dir os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings' from django.core.management import setup_environ from myproject import settings setup_environ(settings) from django.db import transaction, connection cursor = connection.cursor() cursor.execute('SET autocommit = 0') cursor.execute('insert into testtable values (\'X\')') cursor.execute('rollback')
Я также попытался помещать вставку в функцию и добавить оболочку commit_manual Django, например:
@transaction.commit_manually def myfunction(): cursor = connection.cursor() cursor.execute('SET autocommit = 0') cursor.execute('insert into westest values (\'X\')') cursor.execute('rollback') myfunction()
Я также попытался установить DISABLE_TRANSACTION_MANAGEMENT = True в settings.py, без дальнейшей удачи. Я чувствую, что мне не хватает чего-то очевидного. Любая помощь, которую вы можете мне дать, очень ценится. Благодаря!
- Как запустить ipython из оболочки, запустив «python …»?
- Интерактивное построение с помощью Python через командную строку
- Как скопировать текст в / из буфера обмена в Go?
- Python в командной строке не переключается
- запустить скрипт python в терминале без команды python
Являются ли ваши таблицы MyISAM или InnoDB? Помните, что MyISAM не является транзакционным, поэтому его нельзя отменить. См., Например, эту страницу в документации MySQL:
В транзакционных условиях таблицы MyISAM эффективно работают в режиме autocommit = 1.
- Как найти пользовательское поле ip-адреса, сохраненное как целое в Django-admin?
- Django: расширение Querysets / подключение нескольких фильтров с помощью OR
- Как запустить контекстно-зависимые команды в Python?
- Как написать inline для цикла в python после другой инструкции?
- Как не процитировать аргумент в подпроцессе?
- Как я могу получить python в командной строке в Windows?
- Командная строка в коде R
- Создание терминальной программы с помощью Python
- Как определить, был ли запущен скрипт Python через командную строку?
- Выполнять удаленные команды как root с помощью Python и paramiko
- Python sys.argv вне диапазона, не понимаю, почему