Python обновить соединение sqlite3 для получения последних значений - PullRequest
0 голосов
/ 24 августа 2018

У меня есть приложение Djanjo, которое позволяет пользователям вводить данные, которые передаются в базу данных.

Эта база данных сразу же принимается через скрипты Python, работающие на той же машине.

Сценарий

  1. Журналы пользователей на сайте Django от Raspberry Pi (RPi)
  2. Пользователь вводит нужные данные.
  3. Данные отправлены в базу данных.
  4. Пользователь нажимает кнопку, подключенную к RPi, которая запрашивает запрос к базе данных.
  5. Отдельные скрипты 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 секунд.

1 Ответ

0 голосов
/ 24 августа 2018

Выполнение conn.commit() до чтения должно привести к обновлению сеанса подключения.Тогда вы увидите последний статус данных.

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