بايثونطريقة إضافة عدة أسطر في الجدول
المثال التالي يعلمك طريقة إضافة عدة أسطر ( سجلات ) في الجدول employee
الذي أنشأناه في الأمثلة السابقة دفعة واحدة.
لتمرير مجموعة أسطر للدالة executemany()
، سنقوم بإنشاء list
كل عنصر فيه عبارة عن tuple
، و هكذا سنقوم بتجهيز المعلومات التي سيتم تخزينها في قاعدة البيانات بشكل مرتب.
لحفظ أي معلومات تم إضافتها، تعديلها أو مسحها من أي جدول في قاعدة البيانات، يجب استدعاء الدالة commit()
لحفظ التغيرات.
مثال
# mysql.connector هنا قمنا بتضمين كل محتوى الموديول import mysql.connector # MySQL حتى ترجع كائن يسمح لنا بالإتصال بقواعد بيانات connect() هنا قمنا باستدعاء الدالة db = mysql.connector.connect( user='root', passwd='', host='localhost', database='company' ) # يسمح لنا بالتعامل مع قاعدة البيانات cursor لإنشاء كائن cursor() هنا قمنا باستدعاء الدالة cursor = db.cursor() # 'employee' وضعنا فيه نص الإستعلام الذي يسمح بإضافة سطر جديد في الجدول sql المتغير sql = 'INSERT INTO employee(name, phone) values (%s, %s)' # يمثل الأسطر و القيم التي ستوضع بالترتيب في الجدول tuple عبارة عن val الكائن val = [ ('Rami', '96170188201'), ('Sara', '96103200155'), ('Rola', '96176554235'), ('John', '96178665711'), ('Nada', '96171004321') ] # sql و تمرير نص الإستعلام المخزن في المتغير execute() هنا قمنا باستدعاء الدالة # val و من ثم القيم التي سيتم دمجها مع نص الإستعلام و التي قمنا بتخزينها في الكائن cursor.executemany(sql, val) # لحفظ التغيرات التي تم إجراءها في قاعدة البيانات commit() هنا قمنا باستدعاء الدالة db.commit() # هنا قمنا بطباعة عدد الأسطر التي تم إضافتها في الجدول بسبب الإستعلام الذي تم إرساله سابقاً print(cursor.rowcount, 'record(s) inserted') # الذي تم وضعه بشكل تلقائي لآخر عنصر قمنا بإضافته ( id ) هنا قمنا بطباعة رقم التعرفة print('Last row id is', cursor.lastrowid) # هنا قمنا بإغلاق الإتصال مع قاعدة البيانات cursor.close() db.close()
النتيجة: إذا لم يظهر لك أي خطأ بعد تنفيذ الكود فهذا يعني أنه تم إضافة 5 أسطر جديدة في الجدول employee
و سيتم طباعة ما يلي.
Last row id is 6
نلاحظ أنه تم إضافة 5 عناصر جديدة في الجدول و آخر عنصر منهم يملك رقم تعرفة يساوي 6.
معلومة تقنية
قبل إرسال الإستعلام إلى قاعدة البيانات، قامت الدالة executemany()
بدمج نص الإستعلام و القيم التي مررناها لها كالتالي.
INSERT INTO employee(name, phone) values ('Rami', '96170188201'); INSERT INTO employee(name, phone) values ('Sara', '96103200155'); INSERT INTO employee(name, phone) values ('Rola', '96176554235'); INSERT INTO employee(name, phone) values ('John', '96178665711'); INSERT INTO employee(name, phone) values ('Nada', '96171004321');