Home  >  Article  >  Database  >  Why Does My Python MySQL Query Keep Returning the Same Data?

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

Linda Hamilton
Linda HamiltonOriginal
2024-11-06 12:29:02597browse

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

Queries on MySQL from Python Yielding Identical Data

Repeatedly querying a MySQL database from Python to retrieve dynamic data poses a challenge. It is known that merely iterating through a query in a loop does not suffice to fetch fresh data from the database.

Your provided code exemplifies this issue:

<code class="python">for i in range(listSize):
    #...
    mycursor = mydb.cursor(dictionary=True)
    mycursor.execute(sql)
    #...</code>

Even with attempts using fetchall, fetchmany, and fetchone, the results remain stagnant.

The Solution: Committing the Connection

To resolve this, each query execution must be followed by a commit of the connection. This action concludes the ongoing transaction and initiates a new one, enabling the subsequent query to detect alterations made during the previous transaction.

<code class="python">while True:
    #...
    mycursor = mydb.cursor(dictionary=True)
    mycursor.execute(sql)
    #...
    mydb.commit()
    #...</code>

Isolation Levels and the REPEATABLE READ Default

This concept is rooted in isolation levels. By default, MySQL employs REPEATABLE READ for InnoDB. This implies that within a transaction, subsequent reads will retain the snapshot established by the transaction's initial read. Hence, without committing, subsequent queries will not capture any alterations.

The above is the detailed content of Why Does My Python MySQL Query Keep Returning the Same Data?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn