mirror of
https://github.com/Infinidat/infi.clickhouse_orm.git
synced 2025-02-16 16:30:34 +03:00
UUIDField added for ClickHouse UUID type
This commit is contained in:
parent
9df82a44ec
commit
1388dd9e27
|
@ -1,11 +1,12 @@
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
from six import string_types, text_type, binary_type
|
from six import string_types, text_type, binary_type, integer_types
|
||||||
import datetime
|
import datetime
|
||||||
import iso8601
|
import iso8601
|
||||||
import pytz
|
import pytz
|
||||||
import time
|
import time
|
||||||
from calendar import timegm
|
from calendar import timegm
|
||||||
from decimal import Decimal, localcontext
|
from decimal import Decimal, localcontext
|
||||||
|
from uuid import UUID
|
||||||
|
|
||||||
from .utils import escape, parse_array, comma_join
|
from .utils import escape, parse_array, comma_join
|
||||||
|
|
||||||
|
@ -452,6 +453,26 @@ class ArrayField(Field):
|
||||||
return 'Array(%s)' % self.inner_field.get_sql(with_default_expression=False)
|
return 'Array(%s)' % self.inner_field.get_sql(with_default_expression=False)
|
||||||
|
|
||||||
|
|
||||||
|
class UUIDField(Field):
|
||||||
|
class_default = UUID(int=0)
|
||||||
|
db_type = 'UUID'
|
||||||
|
|
||||||
|
def to_python(self, value, timezone_in_use):
|
||||||
|
if isinstance(value, UUID):
|
||||||
|
return value
|
||||||
|
elif isinstance(value, string_types):
|
||||||
|
return UUID(bytes=value) if len(value) == 16 else UUID(value)
|
||||||
|
elif isinstance(value, integer_types):
|
||||||
|
return UUID(int=value)
|
||||||
|
elif isinstance(value, tuple):
|
||||||
|
return UUID(fields=value)
|
||||||
|
else:
|
||||||
|
raise ValueError('Invalid value for UUIDField: %r' % value)
|
||||||
|
|
||||||
|
def to_db_string(self, value, quote=True):
|
||||||
|
return escape(str(value), quote)
|
||||||
|
|
||||||
|
|
||||||
class NullableField(Field):
|
class NullableField(Field):
|
||||||
|
|
||||||
class_default = None
|
class_default = None
|
||||||
|
|
Loading…
Reference in New Issue
Block a user