如何连接 blob?

How can I concatenate blobs?

有没有办法在使用 GROUP BY 时聚合 sqlite 中两条记录的 BLOB(二进制)。

已经试过没有成功:

1) GROUP_CONCAT 来自 sqlite 文档的函数,但它不适用于 BLOB 数据类型,它 returns 只有 1 个字节,即使 2 个 BLOB 比那个大。

 SELECT id, GROUP_CONCAT(blob_col)
 FROM table
 GROUP BY id

2) 通过 Python Sqlite3 "create_aggregate" 函数

定义自己的 SQL 函数
import sqlite3

class BlobConcat:

    def __init__(self):
        self.count = buffer("")

    def step(self, value):
        print str(value)
        self.count += value[:]

    def finalize(self):
        return self.count

con = sqlite3.connect(dbPath)

con.create_aggregate("BLOB_CONCAT", 1, BlobConcat)

sql = """SELECT id, BLOB_CONCAT(blob_col)
         FROM table
         GROUP BY id"""

也只返回 1 个字节。

SQLite 没有用于连接 blob 的内置机制。

可以 编写一个用户定义的函数(聚合或不聚合)来执行此操作。 class 的问题是 return self.count returns 一个 str 对象,它被解释为字符串,而不是 blob。您必须明确地将其转换为缓冲区:

class BlobConcat:
    ...
    def finalize(self):
        return buffer(self.count)