Я подключился к базе данных в Qt, используя c ++.
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("/link/to/my.db");
Одновременно у меня есть программа на Python, которая подключается к одной и той же базе данных и постоянно обновляет таблицу с именем «myTable».
Из Qt я хочу читать недавно обновленные строки каждый раз, когда я опрашиваю. Итак, я хочу
Заблокировать стол; Читать все строки; Удалить все строки; Разблокировать стол.
Как заблокировать и разблокировать таблицу в Qt
В SQLite нет команды блокировки для таблиц. Но вы можете заблокировать базу данных транзакцией:
BEGIN IMMEDIATE TRANSACTION;
...
COMMIT TRANSACTION;
Или же
BEGIN EXCLUSIVE TRANSACTION;
...
COMMIT TRANSACTION;
Таким образом, вы можете выполнять команды транзакций до и после ваших операций:
q.exec("BEGIN IMMEDIATE TRANSACTION");
...
q.exec("COMMIT");
Или же
db.transaction(); // Begins a transaction
...
db.commit(); //Commits a transaction