Python: cursor.fetchall () всегда возвращает одни и те же данные - PullRequest
0 голосов
/ 22 сентября 2019

Я работаю над проектом, который содержит датчик, отправляющий данные в локальную базу данных MySQL.У меня есть скрипт Python, который должен вывести эти данные на график в режиме реального времени.Когда я выполняю свой скрипт, данные извлекаются из базы данных MySQL и выводятся с использованием matplotlib.Тем не менее, у меня есть эта функциональность в цикле, так что, как только новые данные доступны от датчика в базе данных, график обновляется.

Однако я обнаружил, что после запуска сценария он извлекает только данные, доступные в этой точке, даже если датчик обновляет базу данных.Код теста, который я написал, выглядит следующим образом:

import time
import mysql.connector as mysql
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from matplotlib import style

## connecting to the database using 'connect()' method
## it takes 3 required parameters 'host', 'user', 'passwd'
db = mysql.connect(
    host = "localhost",
    user = "xxxxx",
    passwd = "xxxx",
    database = "xxxxx"
)

while (True):
    cursor = db.cursor()
    query = "SELECT * FROM dht11"
    cursor.execute(query)
    records = cursor.fetchall()
    temperature = []
    humidity = []
    Time = []
    ctr = 0
    for record in records:
        temperature.append(record[1])
        humidity.append(record[2])
        ctr = ctr + 1
        Time.append(ctr)
    time.sleep(5)
    print(temperature)

Цикл while выполняет запрос каждые ~ 5 секунд, однако данные, возвращаемые SELECT * из dht11, всегда возвращают одни и те же данные.Я знаю, что новые данные доступны в базе данных MySQL, потому что я вижу их на панели phpMyadmin.Может кто-нибудь указать мне правильное направление?

Я использую Python 3.7.4

...