当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python sqlite3.Connection.create_collation用法及代码示例


用法:

create_collation(name, callable)

使用指定的 namecallable 创建一个排序规则。可调用对象将传递两个字符串参数。如果第一个排序低于第二个,它应该返回 -1,如果它们排序相等,则返回 0,如果第一个排序高于第二个,则返回 1。请注意,这控制排序(SQL 中的 ORDER BY),因此您的比较不会影响其他 SQL 操作。

请注意,可调用对象将以 Python 字节串的形式获取其参数,通常以 UTF-8 编码。

以下示例显示了对 “the wrong way” 进行排序的自定义排序规则:

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 作为可调用对象:

con.create_collation("reverse", None)

相关用法


注:本文由纯净天空筛选整理自python.org大神的英文原创作品 sqlite3.Connection.create_collation。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。