الفرق بين المراجعتين لصفحة: «Python/Cursor/fetchmany»

من موسوعة حسوب
< Python‏ | Cursor
لا ملخص تعديل
سطر 12: سطر 12:


=== <code>size</code> ===
=== <code>size</code> ===
يمكن تحديد عدد الصفوف التي يجلبها التابع مع كل استدعاء عن طريق المعامل <code>size</code>. وفي حال عدم تحديد قيمة لهذا المعامل فإنّ قيمة خاصية <code>arraysize</code> في كائن المؤشر سيحدّد عدد الصفوف التي سيجلبها التابع. سيحاول التابع جلب الصفوف المحدّدة في معامل <code>size</code>، وإن كان ذلك غير ممكنًا بسبب عدم توفّر العدد المحدّد من الصفوف، فإنّ التابع سيعيد الصفوف التي سيجدها فقط.
يمكن تحديد عدد الصفوف التي يجلبها التابع مع كل استدعاء عن طريق المعامل <code>size</code>. وفي حال عدم تحديد قيمة لهذا المعامل فإنّ قيمة خاصية <code>[[Python/sqlite3#.D8.A7.D9.84.D8.AE.D8.A7.D8.B5.D9.8A.D8.A9 arraysize|arraysize]]</code> في كائن المؤشر ستحدّد عدد الصفوف التي سيجلبها التابع (القيمة الافتراضية لهذه الخاصية هي <code>1</code> وهذا يعني أنّ التابع سيجلب صفًّا واحدًا فقط). سيحاول التابع جلب الصفوف المحدّدة في معامل <code>size</code>، وإن كان ذلك غير ممكنًا بسبب عدم توفّر العدد المحدّد من الصفوف، فإنّ التابع سيعيد الصفوف التي سيجدها فقط.


يجب الانتباه إلى أنّ هناك بعض التبعات المترتّبة على قيمة المعامل <code>size</code> من ناحية الأداء، وللحصول على الأداء الأمثل يستحسن استخدام الخاصية <code>arraysize</code>. وفي حال استخدام المعامل <code>size</code> فينصح بأنّ يحافظ هذا المعامل على القيمة ذاتها في كل استدعاء للتابع <code>fetchmany()‎</code>.
يجب الانتباه إلى أنّ هناك بعض التبعات المترتّبة على قيمة المعامل <code>size</code> من ناحية الأداء، وللحصول على الأداء الأمثل يستحسن استخدام الخاصية <code>[[Python/sqlite3#.D8.A7.D9.84.D8.AE.D8.A7.D8.B5.D9.8A.D8.A9 arraysize|arraysize]]</code>. وفي حال استخدام المعامل <code>size</code> فينصح بأنّ يحافظ هذا المعامل على القيمة ذاتها في كل استدعاء للتابع <code>fetchmany()‎</code>.


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

مراجعة 13:00، 19 سبتمبر 2018


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

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

fetchmany(size=cursor.arraysize)

المعاملات

size

يمكن تحديد عدد الصفوف التي يجلبها التابع مع كل استدعاء عن طريق المعامل size. وفي حال عدم تحديد قيمة لهذا المعامل فإنّ قيمة خاصية arraysize في كائن المؤشر ستحدّد عدد الصفوف التي سيجلبها التابع (القيمة الافتراضية لهذه الخاصية هي 1 وهذا يعني أنّ التابع سيجلب صفًّا واحدًا فقط). سيحاول التابع جلب الصفوف المحدّدة في معامل 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 في توثيق بايثون الرسمي.