Из-за «не зависящих от меня обстоятельств» tm я использую sqlalchemy с бэкэндом MS Access. У меня возникла проблема, что следующий код:
def delete_imports(self, files_imported_uid):
table_name = 'my_table'
delete_raw = self.meta.tables[table_name].delete()
self.engine.execute(delete_raw.where(
self.meta.tables[table_name].c.files_imported_uid == files_imported_uid)
)
выдает «Превышено число блокировок при обмене файлами». ошибка с большими таблицами. Сгенерированный оператор просто:
DELETE FROM my_table WHERE my_table.files_imported_uid = ?
с параметром идентификатора пользователя. Затем оператор выполняется через pyodbc. MSDN предоставил несколько предложений, чтобы обойти эту проблему, прежде чем сообщить мне, что они не будут работать, если база данных находится на сервере Novell NetWare, что и есть.
Есть ли известная работа, которую я могу использовать (желательно на уровне sqlalchemy), или мне нужно создать некрасивый хак, который выбирает первые 9 000 записей за раз для удаления и зацикливается до завершения?