def _str_to_column(type_str, key_type=None, value_type=None, column_def={}): ''' Converts name of Cassandra types to driver class wrapper for that type. ''' type_str = type_str.lower() if type_str == 'integer': return Integer(**column_def) elif type_str == 'text': return Text(**column_def) elif type_str == 'ascii': return Ascii(**column_def) elif type_str == 'bigint': return BigInt(**column_def) elif type_str == 'blob': return Blob(**column_def) elif type_str == 'bytes': return Bytes(**column_def) elif type_str == 'boolean': return Boolean(**column_def) elif type_str == 'counter': return Counter(**column_def) elif type_str == 'date': return Date(**column_def) elif type_str == 'datetime': return DateTime(**column_def) elif type_str == 'decimal': return Decimal(**column_def) elif type_str == 'double': return Double(**column_def) elif type_str == 'float': return Float(**column_def) elif type_str == 'list': _assert_type_exception(value_type, "list type requires value_type") return List(value_type=value_type, **column_def) elif type_str == 'map': _assert_type_exception(key_type, "list type requires key_type") _assert_type_exception(value_type, "list type requires value_type") return Map(key_type=key_type, value_type=value_type, **column_def) elif type_str == 'set': _assert_type_exception(value_type, "set type requires value_type") return Set(value_type=value_type, **column_def) elif type_str == 'smallint': return SmallInt(**column_def) elif type_str == 'time': return Time(**column_def) elif type_str == 'timeuuid': return TimeUUID(**column_def) elif type_str == 'timestamp': return TimeUUID(**column_def) elif type_str == 'tinyint': return TinyInt(**column_def) elif type_str == 'uuid': return UUID(**column_def) elif type_str == 'varint': return VarInt(**column_def) else: raise Exception('Type {} is not defined.'.format(type_str))
def test_conversion_specific_date(self): dt = datetime(1981, 7, 11, microsecond=555000) uuid = TimeUUID.from_datetime(dt) from uuid import UUID assert isinstance(uuid, UUID) ts = (uuid.time - 0x01b21dd213814000) / 1e7 # back to a timestamp new_dt = datetime.utcfromtimestamp(ts) # checks that we created a UUID1 with the proper timestamp assert new_dt == dt
class TimeUUIDTest(Model): test_id = Integer(primary_key=True) timeuuid = TimeUUID(default=uuid1())