Выполнить оператор mysql в фоновом режиме - PullRequest
0 голосов
/ 09 июля 2020

У меня есть «одноразовый» оператор sql, который я хотел бы запустить. Меня не волнует статус ошибки, и мне не нужно знать, успешно ли она завершилась. Он предназначен для создания индекса таблицы, которая используется очень редко. В настоящее время у меня есть объект соединения и курсора, и вот как я обычно это делаю:

self.cursor.execute('ALTER TABLE mytable ADD INDEX (_id)')

Достаточно просто. Однако это утверждение занимает около пяти минут, и, как я уже упоминал, его недостаточно, чтобы блокировать другие элементы, не связанные с ним. Можно ли выполнить оператор cursor в фоновом режиме? Опять же, мне не нужен какой-либо статус или что-либо из него, и меня не волнует `` закрытие курсора / соединения '' или что-то еще - это действительно инструкция выброса в таблице, к которой, вероятно, обращаются от одного до пяти раз за время его существования перед удалением.

threading.Thread(target=lambda tn, cursor: cursor.execute('ALTER TABLE %s ADD INDEX (_id)' % tn))).start()

Как лучше всего выполнить оператор в фоновом режиме, чтобы он не блокировал будущие sql операторы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...