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

من موسوعة حسوب
مراجعة 19:50، 18 سبتمبر 2018 بواسطة Mohammed Taher (نقاش | مساهمات) (أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:التابع <code>Connection.create_collation()‎</code> في بايثون}}</noinclude> ينشئ التابع ترتيبًا 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 في توثيق بايثون الرسمي.