示例#1
0
 def get_collection(self,
                    name,
                    codec_options=None,
                    read_preference=None,
                    write_concern=None,
                    read_concern=None):
     if read_concern:
         raise NotImplementedError(
             'Mongomock does not handle read_concern yet')
     if read_preference is not None:
         read_preferences.ensure_read_preference_type(
             'read_preference', read_preference)
     mongomock_codec_options.is_supported(codec_options)
     try:
         return self._collection_accesses[name].with_options(
             codec_options=codec_options or self._codec_options,
             read_preference=read_preference or self.read_preference,
             read_concern=read_concern,
             write_concern=write_concern)
     except KeyError:
         self._ensure_valid_collection_name(name)
         collection = self._collection_accesses[name] = Collection(
             self,
             name=name,
             read_concern=read_concern,
             write_concern=write_concern,
             read_preference=read_preference or self.read_preference,
             codec_options=codec_options or self._codec_options,
             _db_store=self._store,
         )
         return collection
示例#2
0
 def get_collection(self, name, codec_options=None, read_preference=None,
                    write_concern=None, read_concern=None):
     if read_concern:
         raise NotImplementedError('Mongomock does not handle read_concern yet')
     if read_preference is not None:
         read_preferences.ensure_read_preference_type('read_preference', read_preference)
     if codec_options and codec_options != self._codec_options:
         if not bson_codec_options:
             raise NotImplementedError(
                 'The codec options are not implemented in mongomock alone, you need to import '
                 'the pymongo library as well.')
         if codec_options != self._codec_options:
             raise NotImplementedError('The codec options are not implemented yet')
     try:
         return self._collection_accesses[name].with_options(
             codec_options=codec_options or self._codec_options,
             read_preference=read_preference or self.read_preference,
             read_concern=read_concern, write_concern=write_concern)
     except KeyError:
         self._ensure_valid_collection_name(name)
         collection = self._collection_accesses[name] = Collection(
             self, name=name, write_concern=write_concern,
             read_preference=read_preference or self.read_preference,
             codec_options=codec_options or self._codec_options, _db_store=self._store, )
         return collection
    def __init__(self, host=None, port=None, document_class=dict,
                 tz_aware=False, connect=True, _store=None, read_preference=None,
                 **kwargs):
        if host:
            self.host = host[0] if isinstance(host, (list, tuple)) else host
        else:
            self.host = self.HOST
        self.port = port or self.PORT

        self._tz_aware = tz_aware
        self._database_accesses = {}
        self._store = _store or ServerStore()
        self._id = next(self._CONNECTION_ID)
        self._document_class = document_class
        if read_preference is not None:
            read_preferences.ensure_read_preference_type('read_preference', read_preference)
        self._read_preference = read_preference or _READ_PREFERENCE_PRIMARY

        dbase = None

        if '://' in self.host:
            res = parse_uri(self.host, default_port=self.port, warn=True)
            self.host, self.port = res['nodelist'][0]
            dbase = res['database']
        else:
            self.host, self.port = split_hosts(self.host, default_port=self.port)[0]

        self.__default_datebase_name = dbase
示例#4
0
 def get_collection(self,
                    name,
                    codec_options=None,
                    read_preference=None,
                    write_concern=None,
                    read_concern=None):
     if read_concern:
         raise NotImplementedError(
             'Mongomock does not handle read_concern yet')
     if read_preference is not None:
         read_preferences.ensure_read_preference_type(
             'read_preference', read_preference)
     try:
         return self._collection_accesses[name]
     except KeyError:
         collection = self._collection_accesses[name] = Collection(
             self,
             write_concern=write_concern,
             read_preference=read_preference or self.read_preference,
             _store=self._store[name])
         return collection