الفرق بين المراجعتين ل"Python/Connection/create function"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:التابع <code>sqlite3.complete_statement()‎</code> في بايثون}}</noinclude> ينشئ التابع دالة معرفة من قبل...')
 
سطر 1: سطر 1:
 
<noinclude>{{DISPLAYTITLE:التابع <code>sqlite3.complete_statement()‎</code> في بايثون}}</noinclude>
 
<noinclude>{{DISPLAYTITLE:التابع <code>sqlite3.complete_statement()‎</code> في بايثون}}</noinclude>
ينشئ التابع دالة معرفة من قبل المستخدم يمكن استعمالها لاحقًا ضمن جمل SQL.
+
ينشئ التابع دالة معرفة من قبل المستخدم يمكن استعمالها لاحقًا ضمن جمل [[SQL]].
  
 
== البنية العامة ==
 
== البنية العامة ==
سطر 7: سطر 7:
 
create_function(name, num_params, func)
 
create_function(name, num_params, func)
 
</syntaxhighlight>
 
</syntaxhighlight>
+
 
== المعاملات ==
+
== ‎المعاملات ==
 +
 
 
=== <code>name</code> ===
 
=== <code>name</code> ===
 
اسم الدالة المراد إنشاؤها.
 
اسم الدالة المراد إنشاؤها.
سطر 14: سطر 15:
 
=== <code>num_params</code> ===
 
=== <code>num_params</code> ===
  
عدد المعاملات التي تستقبلها الدالة (يمكن تعيين القيمة ‎-1 لهذا المعامل لتستقبل الدالة أي عدد من المعاملات).
+
عدد المعاملات التي تستقبلها الدالة (يمكن تعيين القيمة <code>‎-1</code> لهذا المعامل لتستقبل الدالة أي عدد من المعاملات).
  
 
=== <code>func</code> ===
 
=== <code>func</code> ===
  
كائن قابل للاستدعاء callable في بايثون، والذي سيستدعى كدالة SQL.
+
كائن قابل للاستدعاء callable في بايثون، والذي سيستدعى كدالة [[SQL]].
  
 
== القيمة المعادة ==
 
== القيمة المعادة ==
يمكن للدالة أن تعيد أي قيمة من القيم المدعومة في SQLite وهي: bytes، str، int، float، None.
+
يمكن للدالة أن تعيد أيّة قيمة من القيم المدعومة في SQLite وهي: <code>bytes</code>، <code>str</code>، <code>int</code>، <code>float</code>، <code>None</code>.
  
 
== أمثلة ==
 
== أمثلة ==
  
يبين المثال التالي آلية عمل التابع:
+
يبين المثال التالي طريقة استخدام الدالة:
  
 
<syntaxhighlight lang="python3">
 
<syntaxhighlight lang="python3">
سطر 38: سطر 39:
 
cur = con.cursor()
 
cur = con.cursor()
 
cur.execute("select md5(?)", (b"foo",))
 
cur.execute("select md5(?)", (b"foo",))
print(cur.fetchone()[0])
 
 
create_aggregate(name, num_params, aggregate_class)
 
 
</syntaxhighlight>
 
 
ينشئ التابع دالة تجميع aggregate function معرّفة من قبل المستخدم.
 
يجب أن يتضمن صنف aggregate تابعًا خطويًا step method، يأخذ المعامل num_params والذي يحدّد عدد المعاملات في الدالة التي ينشئها التابع (يمكن تعيين القيمة ‎-1 لهذا المعامل لتستقبل الدالة أي عدد من المعاملات)، وتابع إنهاء finalize method والذي سيعيد النتيجة النهائية من التجميع.
 
 
يمكن لتابع الإنهاء أن يعيد أي قيمة من القيم المدعومة في SQLite وهي: bytes، str، int، float، None.
 
 
مثال:
 
 
<syntaxhighlight lang="python3">
 
 
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])
 
print(cur.fetchone()[0])
 
</syntaxhighlight>
 
</syntaxhighlight>

مراجعة 07:15، 18 سبتمبر 2018

ينشئ التابع دالة معرفة من قبل المستخدم يمكن استعمالها لاحقًا ضمن جمل SQL.

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

create_function(name, num_params, func)

‎المعاملات

name

اسم الدالة المراد إنشاؤها.

num_params

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

func

كائن قابل للاستدعاء callable في بايثون، والذي سيستدعى كدالة SQL.

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

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

أمثلة

يبين المثال التالي طريقة استخدام الدالة:

import sqlite3
import hashlib

def md5sum(t):
    return hashlib.md5(t).hexdigest()

con = sqlite3.connect(":memory:")
con.create_function("md5", 1, md5sum)
cur = con.cursor()
cur.execute("select md5(?)", (b"foo",))
print(cur.fetchone()[0])

انظر أيضًا

مصادر

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