2017-08-10 17 views
1

には、GROUP BYを使用するときに、sqlite内の2つのレコードのBLOB(バイナリ)を集約する方法があります。ブロブをどのように連結できますか?

すでに成功withouth試してみました:sqliteのドキュメントから

1)GROUP_CONCAT機能を、それがBLOBデータ型では動作しません、それは2つのBLOBがより大きくした場合でも、1バイトのみを返します。また、1バイトのみを返すのPython sqlite3の "create_aggregate" 機能

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""" 

を経て独自のSQL関数を定義

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

2)。

答えて

1

SQLiteにはBLOBを連結する組み込みのメカニズムがありません。

お客様は、これを行うためのユーザー定義関数(集計または非作成)を記述します。 クラスの問題点は、return self.countstrオブジェクトを返すことです。このオブジェクトは、blobではなく文字列として解釈されます。明示的にバッファに変換する必要があります:

+0

ありがとう、ありがとう! – Hangon