Programming Basics SQL HTML CSS JavaScript Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Learn Typing

بايثونطريقة إضافة عدة أسطر في الجدول

المثال التالي يعلمك طريقة إضافة عدة أسطر ( سجلات ) في الجدول employee الذي قمنا بإنشاءه في الأمثلة السابقة دفعة واحدة.

لتمرير مجموعة أسطر للدالة executemany(), سنقوم بإنشاء list كل عنصر فيه عبارة عن tuple.
و هكذا سنقوم بتجهيز المعلومات التي سيتم تخزينها بشكل مرتب في.


معلومة تقنية

لحفظ أي معلومات قمت بإضافتها, تعديلها أو مسحها من أي جدول في قاعدة البيانات, يجب أن تستدعي الدالة commit() لحفظ التغيرات.


مثال

Test.py
# 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()
# 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()

إذا لم يظهر لك أي خطأ بعد تشغيل الملف Test فهذا يعني أنه تم إضافة 5 أسطر جديدة في الجدول employee.

أيضاً سيتم طباعة الجملة التالية في الكونسول.

5 record(s) inserted     --> هذا السطر يعني أنه تم إضافة 5 أسطر جديدة في الجدول
Last row id is 6       --> رقم تعرفة آخر موظف أضفناه يساوي 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');
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');