У меня есть «одноразовый» оператор 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 операторы.