3行で
sqliteにprotocol buffersのシリアライズされたデータを突っ込みます。
- sqliteに
blob
のカラムを作る - 突っ込むときは
buffer
で - 読み込むときは
str
で
(protobuf関係なくてただバイナリとして扱ってるだけですね)
例
person.proto
message Person {
optional string name = 1;
optional int32 age = 2;
}
sample.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sqlite3
from person_pb2 import Person
if __name__ == '__main__':
# データベースへの接続とデーブルの作成
conn = sqlite3.connect(":memory:")
c = conn.cursor()
c.execute("create table people (person blob)")
p = Person(name="John Doe", age=128)
print p
# 書き込み
wb = buffer(p.SerializeToString())
c.execute("insert into people values (?)", [wb])
# 読み込み
c.execute("select * from people")
rb = c.fetchone()[0]
q = Person()
q.ParseFromString(str(rb))
print q
結果
name: "John Doe"
age: 128
name: "John Doe"
age: 128
読み書きできました。