1212# See the License for the specific language governing permissions and
1313# limitations under the License.
1414
15- from collections import namedtuple
15+ from collections import namedtuple , defaultdict
1616import logging
1717import six
1818
3737# Because type models may be registered before a connection is present,
3838# and because sessions may be replaced, we must register UDTs here, in order
3939# to have them registered when a new session is established.
40- udt_by_keyspace = {}
40+ udt_by_keyspace = defaultdict ( dict )
4141
4242
4343class UndefinedKeyspaceException (CQLEngineException ):
@@ -191,10 +191,7 @@ def handle_lazy_connect():
191191
192192
193193def register_udt (keyspace , type_name , klass ):
194- try :
195- udt_by_keyspace [keyspace ][type_name ] = klass
196- except KeyError :
197- udt_by_keyspace [keyspace ] = {type_name : klass }
194+ udt_by_keyspace [keyspace ][type_name ] = klass
198195
199196 global cluster
200197 if cluster :
@@ -205,9 +202,10 @@ def register_udt(keyspace, type_name, klass):
205202
206203
207204def _register_known_types (cluster ):
205+ from cassandra .cqlengine import models
208206 for ks_name , name_type_map in udt_by_keyspace .items ():
209207 for type_name , klass in name_type_map .items ():
210208 try :
211- cluster .register_user_type (ks_name , type_name , klass )
209+ cluster .register_user_type (ks_name or models . DEFAULT_KEYSPACE , type_name , klass )
212210 except UserTypeDoesNotExist :
213211 pass # new types are covered in management sync functions
0 commit comments