"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que minhas consultas MySQL do Python estão retornando resultados inconsistentes?

Por que minhas consultas MySQL do Python estão retornando resultados inconsistentes?

Publicado em 2024-11-24
Navegar:578

Why Are My MySQL Queries from Python Returning Inconsistent Results?

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.

Tutorial mais recente Mais>

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