"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لماذا يستمر استعلام Python MySQL في إرجاع نفس البيانات؟

لماذا يستمر استعلام Python MySQL في إرجاع نفس البيانات؟

تم النشر بتاريخ 2024-11-19
تصفح:834

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

الاستعلامات على MySQL من Python التي تنتج بيانات متطابقة

يشكل الاستعلام المتكرر عن قاعدة بيانات MySQL من Python لاسترداد البيانات الديناميكية تحديًا. من المعروف أن مجرد التكرار من خلال استعلام في حلقة لا يكفي لجلب بيانات جديدة من قاعدة البيانات.

رمزك المقدم يوضح هذه المشكلة:

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

حتى مع المحاولات التي تستخدم fetchall، وfetchmany، وfetchone، تظل النتائج راكدة.

الحل: إجراء الاتصال

لحل هذه المشكلة، يجب أن يتبع كل تنفيذ استعلام التزام بالاتصال. ينهي هذا الإجراء المعاملة الجارية ويبدأ معاملة جديدة، مما يمكّن الاستعلام اللاحق من اكتشاف التعديلات التي تم إجراؤها أثناء المعاملة السابقة.

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

مستويات العزل والقراءة الافتراضية القابلة للتكرار

هذا المفهوم متجذر في مستويات العزل. بشكل افتراضي، يستخدم MySQL القراءة المتكررة لـ InnoDB. وهذا يعني أنه ضمن المعاملة، ستحتفظ عمليات القراءة اللاحقة باللقطة التي أنشأتها القراءة الأولية للمعاملة. وبالتالي، بدون الالتزام، لن تلتقط الاستعلامات اللاحقة أي تعديلات.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3