def _create_table(self):
fields = [
- {'name': 'id', 'type': 'char', 'size': 32, 'primary': True},
+ {'name': 'id', 'type': 'char', 'size': 512, 'primary': True},
]
return self.database.connection._create_table(self.database.db_name, '%s$_id' % self.table_name, fields)
def _create_field(self, field_name):
fields = [
- {'name': 'id', 'type': 'char', 'size': 32, 'primary': True},
+ {'name': 'id', 'type': 'char', 'size': 512, 'primary': True},
{'name': 'value', 'type': 'text', 'null': False},
{'name': 'number', 'type': 'float'},
]
else:
docs = doc_or_docs
for doc in docs:
- if not '_id' in doc:
- doc['_id'] = uuid.uuid4().hex
+ if not u'_id' in doc:
+ doc[u'_id'] = uuid.uuid4().hex
self._insert_document(doc)
if type(doc_or_docs) in (list, tuple):
- return [d['_id'] for d in docs]
+ return [d[u'_id'] for d in docs]
else:
- return docs[0]['_id']
+ return docs[0][u'_id']
def _insert_document(self, doc):
table_id = '%s$_id' % self.table_name
fields = self._get_fields()
- self.database.connection._insert(self.database.db_name, table_id, {'id': doc['_id']})
+ coded_id = cPickle.dumps(doc['_id'])
+ self.database.connection._insert(self.database.db_name, table_id, {'id': coded_id})
for f in doc:
if f == '_id':
continue
self._create_field(f)
table_f = '%s$%s' % (self.table_name, f)
values = {
- 'id': doc['_id'],
+ 'id': coded_id,
'value': cPickle.dumps(doc[f]),
}
if type(doc[f]) in (int, float):