- from sqlalchemy import CHAR, TypeDecorator
 - from sqlalchemy.dialects.postgresql import UUID
 - 
 - 
 - class StringUUID(TypeDecorator):
 -     impl = CHAR
 -     cache_ok = True
 - 
 -     def process_bind_param(self, value, dialect):
 -         if value is None:
 -             return value
 -         elif dialect.name == "postgresql":
 -             return str(value)
 -         else:
 -             return value.hex
 - 
 -     def load_dialect_impl(self, dialect):
 -         if dialect.name == "postgresql":
 -             return dialect.type_descriptor(UUID())
 -         else:
 -             return dialect.type_descriptor(CHAR(36))
 - 
 -     def process_result_value(self, value, dialect):
 -         if value is None:
 -             return value
 -         return str(value)
 
 
  |