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

لماذا لا تعمل إدراجات Python MySQL الخاصة بي؟

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

Why Are My Python MySQL Inserts Not Working?

استكشاف أخطاء عمليات إدراج MySQL في Python

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

ينشئ التعليمة البرمجية المقدمة اتصالاً بقاعدة البيانات ويحاول إدراج سجل في جدول "المستندات". ومع ذلك، تفشل عملية الإدراج. لحل هذه المشكلة، من الضروري فهم أهمية معاملات قاعدة البيانات.

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

في الكود المقدم، يتم تنفيذ عملية الإدراج بنجاح، ولكن لا يتم الالتزام بالتغييرات في قاعدة البيانات قبل إغلاق الاتصال (باستخدام db.Close()). بدون تنفيذ المعاملة، يتم تجاهل عملية الإدراج بمجرد إغلاق الاتصال.

لحل هذه المشكلة والتأكد من نجاح عملية الإدراج، يجب عليك تضمين استدعاء db.commit() قبل إغلاق اتصال قاعدة البيانات . ينفذ هذا الإجراء المعاملة، مما يجعل السجل المدرج ثابتًا في قاعدة البيانات.

إليك الكود المعدل الذي يتضمن عملية الالتزام:

db = MySQLdb.connect("localhost", "root", "padmaramulu", "pdfsearch")
cursor = db.cursor()
# cursor.execute("""CREATE TABLE IF NOT EXISTS documents (docid INT NOT NULL ,PRIMARY KEY(docid),docname CHAR(30)) engine=innodb""")
temp = "hello"; number = 2;
cursor.execute('insert into documents(docid,docname) values("%d","%s")' % (number, temp))
db.commit()
db.close()
من خلال تضمين استدعاء db.commit()، فإن التغييرات التي تم إجراؤها أثناء المعاملة، بما في ذلك عملية الإدراج، تلتزم بقاعدة البيانات وتصبح دائمة.

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

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

Copyright© 2022 湘ICP备2022001581号-3