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

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


ينشئ التابع مقارنة collation يحمل الاسم المعطى مع الكائن القابل للاستدعاء المعطى.

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

create_collation(name, callable)

‎المعاملات

name

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

callable

كائن قابل للاستدعاء.

سيُمرّر وسيطان نصّيان إلى الكائن القابل للاستدعاء، وسيعيد النتيجة ‎-1 إن كان ترتيب الوسيط الأول أدنى من الوسيط الثاني، ويعيد 0 إن كان الوسيطان متساويين، ويعيد 1 إن كان ترتيب الوسيط الأول أعلى من الوسيط الثاني.

لاحظ أنّ هذه المقارنة تتحكّم في عبارة (ORDER BY في SQL) لكي لا تؤثّر عمليات المقارنة على عمليات SQL الأخرى.

لاحظ أيضًا أنّ الكائن القابل للاستدعاء سيتلقّى معاملاته على هيئة سلاسل بايتات نصية، والتي سترمّز في العادة إلى الترميز UTF-8.

أمثلة

يبين المثال التالي مقارنة خاصة تعمل على ترتيب النتائج "هذه ليست الطريقة الصحيحة لترتيب النتائج":

import sqlite3

def collate_reverse(string1, string2):
    if string1 == string2:
        return 0
    elif string1 < string2:
        return 1
    else:
        return -1

con = sqlite3.connect(":memory:")
con.create_collation("reverse", collate_reverse)

cur = con.cursor()
cur.execute("create table test(x)")
cur.executemany("insert into test(x) values (?)", [("a",), ("b",)])
cur.execute("select x from test order by x collate reverse")
for row in cur:
    print(row)
con.close()

يمكن استدعاء التابع create_collation()‎ مع تمرير القيمة None للمعامل callable لحذف المقارنة الحالية:

con.create_collation("reverse", None)

انظر أيضًا

مصادر

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