types.py 712 B

1234567891011121314151617181920212223242526
  1. from sqlalchemy import CHAR, TypeDecorator
  2. from sqlalchemy.dialects.postgresql import UUID
  3. class StringUUID(TypeDecorator):
  4. impl = CHAR
  5. cache_ok = True
  6. def process_bind_param(self, value, dialect):
  7. if value is None:
  8. return value
  9. elif dialect.name == "postgresql":
  10. return str(value)
  11. else:
  12. return value.hex
  13. def load_dialect_impl(self, dialect):
  14. if dialect.name == "postgresql":
  15. return dialect.type_descriptor(UUID())
  16. else:
  17. return dialect.type_descriptor(CHAR(36))
  18. def process_result_value(self, value, dialect):
  19. if value is None:
  20. return value
  21. return str(value)