| 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) |
|
|