Custom Types¶
Compressed String¶
A unicode string, but compressed.
Compressed Binary¶
A big binary blob, but compressed.
Compressed JSON¶
A json serializable object, but compressed.
JSON Serializable¶
Any JSON serializable object, if implemented to_json(self):
and from_json(cls, json_str):
method.
import jsonpickle
# a custom python class
class ComputerDetails:
def __init__(self, ...):
...
def to_json(self) -> str:
return jsonpickle.encode(self)
@classmethod
def from_json(cls, json_str: str) -> 'Computer':
return cls(**jsonpickle.decode(json_str))
Base = declarative_base()
class Computer(Base):
id = Column(Integer, primary_key)
details = Column(JSONSerializableType(factory_class=Computer)
...
computer = Computer(
id=1,
details=ComputerDetails(...),
)
with Session(engine) as session:
session.add(computer)
session.commit()
computer = session.get(Computer, 1)
print(computer.details)