Rumah > Artikel > pangkalan data > Mengapa Pertanyaan MySQL Berulang Saya Tidak Mengembalikan Data Terkini?
Pertanyaan MySQL Berulang Tidak Mengembalikan Data Terkini: Menyelesaikan Isu Melalui Komit Transaksi
Dalam Python, sambil berulang kali menanyakan pangkalan data MySQL yang berubah dengan pantas, adalah penting untuk memastikan bahawa setiap pertanyaan mendapatkan semula data yang paling terkini. Walau bagaimanapun, sesetengah mungkin menghadapi isu di mana pertanyaan seterusnya mengembalikan data yang sama walaupun pangkalan data mengalami perubahan. Ini disebabkan oleh tahap pengasingan asas sambungan pangkalan data.
Konsep tahap pengasingan menentukan cara transaksi diasingkan antara satu sama lain. Dalam kes tahap pengasingan lalai MySQL, BACA BERULANG, setiap pertanyaan dalam transaksi yang sama bergantung pada petikan pangkalan data yang diambil pada permulaan transaksi. Ini bermakna pertanyaan berikutnya tidak akan menggambarkan sebarang perubahan pangkalan data yang dibuat semasa transaksi itu aktif.
Untuk menyelesaikan isu ini, adalah penting untuk melakukan sambungan selepas setiap pertanyaan. Ini memulakan transaksi baharu dan memastikan pertanyaan seterusnya beroperasi pada petikan pangkalan data terkini. Berikut ialah contoh:
<code class="python">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 ! mydb.commit() print("---") sleep (0.1)</code>
Dengan melakukan selepas setiap pertanyaan, sambungan mewujudkan urus niaga baharu, memastikan setiap pertanyaan berikutnya akan membaca petikan pangkalan data terkini, dengan itu mencerminkan perubahan pangkalan data terkini. Ini menyelesaikan masalah pertanyaan berulang secara konsisten mengembalikan data lapuk.
Atas ialah kandungan terperinci Mengapa Pertanyaan MySQL Berulang Saya Tidak Mengembalikan Data Terkini?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!