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

لماذا تقوم الاستعلامات اللاحقة في حلقة Python بإرجاع نفس البيانات من قاعدة بيانات MySQL؟

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

Why Do Subsequent Queries in a Python Loop Return the Same Data from a MySQL Database?

استرداد البيانات الديناميكية من MySQL باستخدام Python Queries

عند الاستعلام بشكل دوري عن قاعدة بيانات MySQL سريعة التغير من Python، قد تتوقع إجراءً يستند إلى الحلقة نهج لجلب أحدث البيانات باستمرار. ومع ذلك، قد تواجه موقفًا حيث يتم إرجاع نفس البيانات بشكل متكرر.

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

لحل هذه المشكلة، تحتاج إلى تنفيذ الاتصال بعد كل استعلام، مما يضمن أن المعاملة التالية سوف تسترد أحدث البيانات. إليك كيفية تعديل كود بايثون الخاص بك:

# Main loop
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)

بإضافة mydb.commit() بعد كل استعلام، فإنك تجبر MySQL على تنفيذ المعاملة وتحديث اللقطة. وهذا يسمح للاستعلامات اللاحقة بالوصول إلى أحدث البيانات.

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

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

Copyright© 2022 湘ICP备2022001581号-3