У меня есть приложение Djanjo, которое позволяет пользователям вводить данные, которые передаются в базу данных.
Эта база данных сразу же принимается через скрипты Python, работающие на той же машине.
Сценарий
- Журналы пользователей на сайте Django от Raspberry Pi (RPi)
- Пользователь вводит нужные данные.
- Данные отправлены в базу данных.
- Пользователь нажимает кнопку, подключенную к RPi, которая запрашивает запрос к базе данных.
- Отдельные скрипты Python выполняют вычисления на основе пользовательского ввода.
Моя проблема в том, что если шаг 4 выполняется сразу после шага 3, запрос не получает последние данные, введенные пользователем, но предыдущие данные уже сохранены в базе данных.
Если пользователь нажмет кнопку через 30 секунд, запрос будет выполнен успешно.
Мой код для получения последних данных из базы данных:
conn = sqlite3.connect('Line3_Data.db')
c = conn.cursor()
c.execute("SELECT tact FROM LineOEE03 ORDER BY tact desc limit 1")
current_tact = c.fetchone()
tact
-----------------
45 <- old value retrieved
60 <- new value from step 3 not retrieved
60 <- new value from step 3 not retrieved
Есть ли способ обновить соединение, чтобы убедиться, что извлекаются только самые последние значения?
EDIT
Запись в базу данных происходит очень быстро. Это сразу видно при обновлении sqlitebrowser
. После обновления sqlitebrowser
, проверки наличия записи, старое значение все еще возвращается.
Для считывания нового значения необходимо около 30 секунд.