Serializers

Serializers convert Node, Edge, and adjacency dictionaries to bytes for storage. Choose the serializer based on portability and payload requirements.

Pickle Serializer

PickleSerializer is convenient for Python-only workflows.

from pygraphdb.serializers import PickleSerializer

serializer = PickleSerializer()
payload = {"id": "node-1", "properties": {"score": 1}}
assert serializer.deserialize(serializer.serialize(payload)) == payload

JSON Serializer

JSONSerializer is readable and portable for JSON-compatible values.

from pygraphdb.serializers import JSONSerializer

serializer = JSONSerializer()
data = serializer.serialize({"name": "Alice", "active": True})
print(data.decode("utf-8"))

MessagePack Serializer

MessagePackSerializer is compact and supports bytes values.

from pygraphdb.serializers import MessagePackSerializer

serializer = MessagePackSerializer()
payload = {"edge_ids": [b"e1", b"e2"]}
assert serializer.deserialize(serializer.serialize(payload)) == payload

Install the optional dependency first:

python -m pip install ".[msgpack]"

Protobuf Serializer

ProtobufSerializer uses google.protobuf.Struct. It tags bytes and ints so they round-trip cleanly through Struct’s JSON-like model.

from pygraphdb.serializers import ProtobufSerializer

serializer = ProtobufSerializer()
payload = {"count": 3, "raw": b"abc"}
assert serializer.deserialize(serializer.serialize(payload)) == payload

Install the optional dependency first:

python -m pip install ".[protobuf]"

Using a Serializer With GraphDB

from pygraphdb.graphdb import GraphDB
from pygraphdb.kvstores import LMDBStore
from pygraphdb.serializers import MessagePackSerializer

graph_db = GraphDB(LMDBStore(path="msgpack_lmdb"), MessagePackSerializer())