X-Git-Url: https://git.jsancho.org/?p=mojodb.git;a=blobdiff_plain;f=collection.py;h=804135379d089cf4ebc5f0e6f0f8b3a1a8981f42;hp=e0f00026ba5dea8c411cfc4cd84782bd78df1582;hb=HEAD;hpb=8893f5128b8e8790f186c8bf354a3bb721d69bcb diff --git a/collection.py b/collection.py index e0f0002..8041353 100644 --- a/collection.py +++ b/collection.py @@ -20,7 +20,7 @@ ############################################################################## from cursor import Cursor -import uuid +from objectid import ObjectId class Collection(object): def __init__(self, database, table_name): @@ -63,7 +63,7 @@ class Collection(object): else: docs = doc_or_docs for doc in docs: - doc_id = uuid.uuid4().hex + doc_id = str(ObjectId()) if not '_id' in doc: doc['_id'] = doc_id self._insert_document(doc_id, doc) @@ -75,11 +75,17 @@ class Collection(object): def _insert_document(self, doc_id, doc): fields = self._get_fields() - for f in doc: - if not f in fields: - self._create_field(f) - table_f = '%s$%s' % (self.table_name, f) - self._insert_field(doc_id, table_f, f, doc[f]) + self.database.connection.savepoint("insert_document") + try: + for f in doc: + if not f in fields: + self._create_field(f) + table_f = '%s$%s' % (self.table_name, f) + self._insert_field(doc_id, table_f, f, doc[f]) + self.database.connection.commit_savepoint("insert_document") + except: + self.database.connection.rollback_savepoint("insert_document") + raise def _insert_field(self, doc_id, field_table, field_name, field_value): values = {