كائنات Cursor‎ في بايثون

من موسوعة حسوب

كائنات Cursor هي وسيلة التواصل بين المستخدم وقاعدة البيانات، حيث يمكن باستخدام الخصائص والتوابع التي تقدّمها هذه الكائنات تنفيذ جمل SQL وإجراء الاستعلامات وجلب النتائج من قاعدة البيانات.

خصائص كائنات Cursor

يمتلك كائن المؤشر الخصائص التالية:

الخاصية rowcount

بالرغم من أنّ صنف Cursor في وحدة sqlite3 يتضمّن هذه الخاصية، إلا أنّ الدعم الذي يقدّمه محرّك SQLite لتحديد "عدد الصفوف المتأثرة"/"عدد الصفوف المحدّدة" جيّد أيضًا.

يُجمع عدد التعديلات في الخاصية rowcount عند تنفيذ جمل الاستعلام بواسطة التابع executemany()‎.

تتطلب معايير بايثون لواجهات قواعد البيانات البرمجية Python DB API أن تحمل الخاصية rowcount "القيمة ‎-1 في حال عدم تنفيذ أي تابع من توابع executeXX()‎ على المؤشر، أو عندما لا يكون بإمكان الواجهة البرمجية تحديد قيمة rowcount لآخر عملية". ويتضمن هذا جمل SELECT لأنّنا لا نستطيع تحديد عدد الصفوف الناتجة من استعلام معين إلا بعد جلب جميع الصفوف.

في الإصدارات السابقة للإصدار 3.6.5 من SQLite، تعين القيمة 0 للخاصية rowcount في حال تنفيذ عبارة DELETE FROM table دون وضع أي شروط.

الخاصية lastrowid

خاصية للقراءة فقط تقدّم معرّف الصف rowid لآخر صفّ جرى تعديله. لا تأخذ هذه الخاصية أيّ قيمة إلا عند تنفيذ جمل INSERT أو REPLACE باستخدام التابع execute()‎. أما عند تنفيذ جمل أخرى غير الجملتين السابقتين، أو عند استدعاء التابع executemany()‎ فإنّ هذه الخاصية ستأخذ القيمة None.

في حال فشل تنفيذ جملة INSERT أو REPLACE في إدراج البيانات تأخذ هذه الخاصية قيمة آخر عملية إدراج ناجحة.

ملاحظة: أضيف دعم جملة REPLACE في الإصدار 3.6 من اللغة.

الخاصية arraysize

خاصية للقراءة والكتابة تتحكم في عدد الصفوف المعادة بواسطة التابع fetchmany()‎. القيمة الافتراضية لهذه الخاصية هي 1 ويعني ذلك أنّ استدعاء التابع سيؤدي إلى جلب صفٍّ واحدٍ فقط.

الخاصية description

خاصية للقراءة فقط، وتقدّم أسماء الأعمدة في آخر استعلام أجراه المستخدم. تعيد هذا الخاصية صفًّا يتضمن سبعة عناصر لكل عمود وتحمل آخر ستة عناصر في هذا الصف القيمة None، وذلك لتكون هذه الخاصية متوافقة مع واجهة بايثون لقواعد البيانات Python DB API.

تأخذ هذه الخاصية القيمة نفسها لجمل SELECT التي لا تعيد أي صفّ من قاعدة البيانات.

الخاصية connection

خاصية للقراءة فقط، وتقدّم اسم الاتصال بقاعدة بيانات SQLite الذي يستخدمه كائن المؤشر. فعلى سبيل المثال، لو أنشئ كائن مؤشر باستدعاء التابع con.cursor()‎ فإنّ خاصية connection ستشير إلى الكائن con، كما هو مبين في المثال التالي:

>>> con = sqlite3.connect(":memory:")
>>> cur = con.cursor()
>>> cur.connection == con
True

توابع كائنات Cursor

تقدّم كائنات Cursor التوابع التالية:

التابع execute()‎

ينفّذ التابع جملة SQL المعطاة.

التابع executemany()‎

ينفّذ التابع أمر SQL على جميع تسلسلات المعاملات parameter sequences أو الروابط mappings الموجودة في تسلسل المعاملات المعطى.

التابع executescript()‎

هذا التابع من التوابع غير المعيارية والذي يسهل عملية تنفيذ جمل SQL متعددة دفعة واحدة.

التابع fetchone()‎

يجلب التابع الصفّ row التالي من نتيجة الاستعلام، ويعيد تسلسلًا واحدًا فقط.

التابع fetchmany()‎

يجلب التابع المجموعة اللاحقة من الصفوف rows في نتيجة الاستعلام.

التابع fetchall()‎

يجلب التابع جميع الصفوف (المتبقّية) في نتيجة الاستعلام، ويعيد النتيجة على هيئة قائمة.

التابع close()‎

يغلق التابع المؤشر الحالي.

انظر أيضًا

مصادر