"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 minha consulta Python MySQL continua retornando os mesmos dados?

Por que minha consulta Python MySQL continua retornando os mesmos dados?

Publicado em 19/11/2024
Navegar:470

Why Does My Python MySQL Query Keep Returning the Same Data?

Consultas no MySQL do Python produzindo dados idênticos

Consultar repetidamente um banco de dados MySQL do Python para recuperar dados dinâmicos representa um desafio. Sabe-se que apenas iterar uma consulta em um loop não é suficiente para buscar dados novos do banco de dados.

Seu código fornecido exemplifica esse problema:

for i in range(listSize):
    #...
    mycursor = mydb.cursor(dictionary=True)
    mycursor.execute(sql)
    #...

Mesmo com tentativas de usar fetchall, fetchmany e fetchone, os resultados permanecem estagnados.

A solução: confirmando a conexão

Para resolver isso, cada execução de consulta deve ser seguida por um commit da conexão. Esta ação conclui a transação em andamento e inicia uma nova, permitindo que a consulta subsequente detecte alterações feitas durante a transação anterior.

while True:
    #...
    mycursor = mydb.cursor(dictionary=True)
    mycursor.execute(sql)
    #...
    mydb.commit()
    #...

Níveis de isolamento e o padrão REPEATABLE READ

Este conceito está enraizado em níveis de isolamento. Por padrão, o MySQL emprega REPEATABLE READ para InnoDB. Isto implica que dentro de uma transação, as leituras subsequentes reterão o instantâneo estabelecido pela leitura inicial da transação. Portanto, sem confirmação, as consultas subsequentes não capturarão nenhuma alteração.

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