استرداد البيانات الديناميكية من 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