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