التابع Cursor.fetchmany()
في بايثون
يجلب التابع المجموعة اللاحقة من الصفوف rows في نتيجة الاستعلام، ويعيد النتيجة كقائمة.
البنية العامة
fetchmany(size=cursor.arraysize)
المعاملات
size
يمكن تحديد عدد الصفوف التي يجلبها التابع مع كل استدعاء عن طريق المعامل size. وفي حال عدم تحديد قيمة لهذا المعامل فإنّ قيمة خاصية arraysize في كائن المؤشر سيحدّد عدد الصفوف التي سيجلبها التابع. سيحاول التابع جلب الصفوف المحدّدة في معامل size، وإن كان ذلك غير ممكنًا بسبب عدم توفّر العدد المحدّد من الصفوف، فإنّ التابع سيعيد الصفوف التي سيجدها فقط.
يجب الانتباه إلى أنّ هناك بعض التبعات المترتّبة على قيمة المعامل size من ناحية الأداء، وللحصول على الأداء الأمثل يستحسن استخدام الخاصية arraysize. وفي حال استخدام المعامل size فينصح بأنّ يحافظ هذا المعامل على القيمة ذاتها في كل استدعاءات الدالة fetchmany().
القيمة المعادة
يجلب التابع الصفّ row التالي من نتيجة الاستعلام، ويعيد تسلسلًا واحدًا فقط، أو يعيد القيمة None في حال عدم توفّر المزيد من البيانات.
أمثلة
يبين المثال التالي آلية عمل التابع:
>>> 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.fetchmany()
:يجلب التابع المجموعة اللاحقة من الصفوف rows في نتيجة الاستعلام، - التابع
Connection.fetchall()
:يجلب التابع جميع الصفوف (المتبقّية) في نتيجة الاستعلام، ويعيد النتيجة على هيئة قائمة.
مصادر
صفحة DB-API 2.0 interface for SQLite databases في توثيق بايثون الرسمي.