التابع Connection.create_aggregate()‎ في بايثون

من موسوعة حسوب
مراجعة 19:32، 18 سبتمبر 2018 بواسطة Mohammed Taher (نقاش | مساهمات) (←‏البنية العامة)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

ينشئ التابع دالة تجميع aggregate function معرّفة من قبل المستخدم.

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

create_aggregate(name, num_params, aggregate_class)

المعاملات

name

اسم دالة التجميع المراد إنشاؤها.

num_params

عدد المعاملات التي تستقبلها الدالة (يمكن تعيين القيمة ‎-1 لهذا المعامل لتستقبل الدالة أي عدد من المعاملات).

aggregate_class

صنف تجميع يجب أن يتضمّن تابع step، والذي يأخذ المعامل num_params والذي يحدّد عدد المعاملات في الدالة التي ينشئها التابع (يمكن تعيين القيمة ‎-1 لهذا المعامل لتستقبل الدالة أي عدد من المعاملات)، وتابع finalize والذي سيعيد النتيجة النهائية من التجميع.

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

يمكن لتابع الإنهاء أن يعيد أي قيمة من القيم المدعومة في SQLite وهي: bytes، str، int، float، None.

أمثلة

يبين المثال التالي آلية عمل التابع:

import sqlite3

class MySum:
    def __init__(self):
        self.count = 0

    def step(self, value):
        self.count += value

    def finalize(self):
        return self.count

con = sqlite3.connect(":memory:")
con.create_aggregate("mysum", 1, MySum)
cur = con.cursor()
cur.execute("create table test(i)")
cur.execute("insert into test(i) values (1)")
cur.execute("insert into test(i) values (2)")
cur.execute("select mysum(i) from test")
print(cur.fetchone()[0])

انظر أيضًا

مصادر

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