Удаление и запись таблицы одновременно - PullRequest
0 голосов
/ 23 января 2020

У меня есть приложение, которое постоянно вставляет данные в Таблицу1. У меня есть еще одно приложение python, которое считывает данные (каждые 20 секунд) из таблицы Table1, вставляет их в Merge_table (новую) и удаляет вставленные строки в Tabe1. Я учил, что есть блокировка на уровне строк. выглядит sqlite3 нет блокировки на уровне строк. Могу подсказать, как мне это преодолеть, чтобы и то и другое происходило без проблем.

2) Мне нужно почистить Таблицу 1, так как она будет огромной.

Error I see when inserting data:
Error: database is locked

Код, который я использую удаляемые данные

delete from MyTable where ID between 1 and 50.

Я читаю, у нас не может быть нескольких операций записи. какой еще вариант

1 Ответ

1 голос
/ 25 января 2020

Я не уверен, что вы достигнете желаемого с помощью sqlite.

Вы можете замедлить вставки, чтобы дать время для чтения / удаления, но даже если вы сделаете это, вам понадобится для обработки исключений, возникающих при блокировке базы данных (как для читателя, так и для писателя).

Другая возможность заключается в использовании sqlite в режиме WAL , но убедитесь, что его ограничения не являются проблемой для вас; например, в режиме WAL ваше приложение должно быть «... готово пожертвовать долговечностью после потери питания или полной перезагрузки». Просто внимательно прочитайте документацию.

Следующий вариант - перейти на другой сервер базы данных, например MySQL. Благодаря InnoDB для таблиц доступна блокировка записей, а не блокировка таблиц.

Sqlite - это здорово, у меня есть база данных с почти 9 миллионами строк в таблице, но она не подходит для одновременных записей - вот когда вам действительно нужно сервер базы данных.

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