Rumah >pangkalan data >tutorial mysql >Mengapa Pertanyaan MySQL Berulang dalam Python Mengembalikan Hasil Yang Sama?

Mengapa Pertanyaan MySQL Berulang dalam Python Mengembalikan Hasil Yang Sama?

Patricia Arquette
Patricia Arquetteasal
2024-11-08 21:10:02217semak imbas

Why Do Repeated MySQL Queries in Python Return Identical Results?

Pendapatan Data Berterusan daripada Pertanyaan MySQL Berulang dalam Python

Dalam skrip Python, adalah penting untuk kerap menanyakan pangkalan data MySQL untuk menangkap data dinamik. Apabila bergantung pada gelung untuk mendapatkan data sedemikian, ia boleh mengelirukan untuk mendapati bahawa pengambilan berikutnya mengembalikan hasil yang sama.

Isu

Dalam skrip Python yang diberikan, gelung digunakan untuk melaksanakan MySQL berulang kali pertanyaan dan simpan keputusan dalam senarai:

<code class="python">for i in range(listSize):
    # ...
    # SQL query
    sql = "SELECT * FROM table"
    # ...</code>

Walaupun jangkaan bahawa gelung akan menyegarkan semula data yang diambil daripada pangkalan data pada setiap lelaran, skrip mendapatkan semula hasil yang sama berulang kali.

Penyelesaian

Isu utama isu ini terletak pada tahap pengasingan transaksi MySQL. Secara lalai, InnoDB, enjin storan yang digunakan oleh MySQL, beroperasi di bawah tahap pengasingan READ COMMITTED, yang memastikan perkara berikut:

"Bacaan konsisten dalam urus niaga yang sama baca syot kilat yang ditetapkan oleh bacaan pertama."

Ini bermakna pertanyaan seterusnya dalam urus niaga mendapatkan semula data seperti yang wujud semasa transaksi dimulakan. Untuk menangani perkara ini, setiap lelaran gelung mesti berakhir dengan perintah mydb.commit().

<code class="python">import ...
# ...
while True:
    # ...
    # SQL query
    sql = "SELECT * FROM table"
    # ...
    mydb.commit()</code>

Dengan melakukan sambungan, skrip memaksa pangkalan data untuk menangkap perubahan yang dibuat semasa transaksi, memastikan yang berikutnya pertanyaan mencerminkan keadaan semasa pangkalan data.

Penjelasan

Setiap lelaran gelung dalam sambungan MySQL dianggap sebagai transaksi berasingan, yang secara lalai dibaca daripada syot kilat yang konsisten. Melakukan sambungan pada penghujung setiap lelaran memastikan transaksi seterusnya membaca petikan terbaharu, mencerminkan perubahan yang dibuat dalam transaksi sebelumnya.

Atas ialah kandungan terperinci Mengapa Pertanyaan MySQL Berulang dalam Python Mengembalikan Hasil Yang Sama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn