Consultas MySQL de Python produzindo inconsistências
Sua consulta provavelmente não está recuperando os dados mais atualizados porque você não está confirmando alterações no banco de dados. Por padrão, o MySQL define o nível de isolamento para "REPEATABLE READ", o que significa que consultas subsequentes dentro da mesma transação visualizam o instantâneo inicial dos dados em vez de quaisquer alterações feitas durante a transação.
Para garantir que seus dados estejam atualizados -to-date, você precisa confirmar a conexão após cada consulta. Isso completa a transação atual e prepara a próxima transação para buscar as alterações mais recentes do banco de dados.
Aqui está uma versão atualizada do seu código com o commit necessário:
# Main loop
while True:
# SQL query
sql = "SELECT * FROM table"
# Read the database, store as a dictionary
mycursor = mydb.cursor(dictionary=True)
mycursor.execute(sql)
# Store data in rows
myresult = mycursor.fetchall()
# Transfer data into list
for row in myresult:
myList[int(row["rowID"])] = (row["a"], row["b"], row["c"])
print(myList[int(row["rowID"])])
# Commit changes!
mydb.commit()
print("---")
sleep(0.1)
Com esta modificação, seu código agora recuperará os dados mais recentes do banco de dados durante cada loop de consulta.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3