التابع Cursor.fetchmany()‎ في بايثون

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


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

البنية العامة

fetchmany(size=cursor.arraysize)

المعاملات

size

يمكن تحديد عدد الصفوف التي يجلبها التابع مع كل استدعاء عن طريق المعامل size. وفي حال عدم تحديد قيمة لهذا المعامل فإنّ قيمة خاصية arraysize في كائن المؤشر سيحدّد عدد الصفوف التي سيجلبها التابع. سيحاول التابع جلب الصفوف المحدّدة في معامل size، وإن كان ذلك غير ممكنًا بسبب عدم توفّر العدد المحدّد من الصفوف، فإنّ التابع سيعيد الصفوف التي سيجدها فقط.

يجب الانتباه إلى أنّ هناك بعض التبعات المترتّبة على قيمة المعامل size من ناحية الأداء، وللحصول على الأداء الأمثل يستحسن استخدام الخاصية arraysize. وفي حال استخدام المعامل size فينصح بأنّ يحافظ هذا المعامل على القيمة ذاتها في كل استدعاءات الدالة fetchmany()‎.

‎القيمة المعادة

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

يعيد التابع قائمة فارغة في حال عدم توفّر المزيد من الصفوف.

أمثلة

يبين المثال التالي طريقة عمل التابع:

>>> import sqlite3
>>> conn = sqlite3.connect(":memory:")
>>> cur = conn.cursor()
>>> cur.execute("CREATE TABLE stocks (date text, trans text, symbol text, qty real, price real)")
<sqlite3.Cursor object at 0x7f0e97a11f10>
>>> purchases = [('2006-03-28', 'BUY', 'IBM', 1000, 45.00),
...              ('2006-04-05', 'BUY', 'MSFT', 1000, 72.00),
...              ('2006-04-06', 'SELL', 'IBM', 500, 53.00),
...             ]
>>> cur.executemany('INSERT INTO stocks VALUES (?,?,?,?,?)', purchases)
<sqlite3.Cursor object at 0x7f0e97a11f10>
>>> cur.execute("SELECT * FROM stocks ORDER BY price")
<sqlite3.Cursor object at 0x7f0e97a11f10>
>>> for row in cur.fetchmany(5):
...     print(row)
... 
('2006-03-28', 'BUY', 'IBM', 1000.0, 45.0)
('2006-04-06', 'SELL', 'IBM', 500.0, 53.0)
('2006-04-05', 'BUY', 'MSFT', 1000.0, 72.0)

انظر أيضًا

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

مصادر

صفحة DB-API 2.0 interface for SQLite databases في توثيق بايثون الرسمي.