كائنات 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()
يغلق التابع المؤشر الحالي.