Source code for simpleml.persistables.binary_blob

'''
Optional module to persist pickled objects in database instead of filesystem
'''

from simpleml.persistables.guid import GUID
from simpleml.persistables.base_sqlalchemy import BaseSQLAlchemy
from sqlalchemy import MetaData, Column, String, LargeBinary, event, DDL
import uuid

__author__ = 'Elisha Yadgaran'

BINARY_STORAGE_SCHEMA = 'BINARY'


[docs]class BinaryBlob(BaseSQLAlchemy): __tablename__ = 'binary_blobs' # Store binary data in its own schema metadata = MetaData(schema=BINARY_STORAGE_SCHEMA) id = Column(GUID, primary_key=True, default=uuid.uuid4) object_type = Column(String, nullable=False) object_id = Column(GUID, nullable=False) # TODO: Figure this out and think it through... binary_blob = Column(LargeBinary) event.listen(metadata, 'before_create', DDL('''CREATE SCHEMA IF NOT EXISTS "{}";'''.format(BINARY_STORAGE_SCHEMA)))