示例#1
0
文件: db.py 项目: icona2/crawling
    def write_batch(self, context: 'IconScoreContext', states: dict):

        if not _is_db_writable_on_context(context):
            raise DatabaseException(
                'write_batch is not allowed on readonly context')

        return self.key_value_db.write_batch(states)
示例#2
0
文件: db.py 项目: icona2/crawling
    def close(self, context: 'IconScoreContext') -> None:
        """close db

        :param context:
        """
        if not _is_db_writable_on_context(context):
            raise DatabaseException('close is not allowed on readonly context')

        if not self._is_shared:
            return self.key_value_db.close()
示例#3
0
文件: db.py 项目: icona2/crawling
    def get_sub_db(self, prefix: bytes) -> 'IconScoreDatabase':
        if prefix is None:
            raise DatabaseException(
                'Invalid params: '
                'prefix is None in IconScoreDatabase.get_sub_db()')

        if self._prefix is not None:
            prefix = b'|'.join([self._prefix, prefix])

        icon_score_database = IconScoreDatabase(self.address, self._context_db,
                                                prefix)

        icon_score_database.set_observer(self._observer)

        return icon_score_database
示例#4
0
文件: db.py 项目: icona2/crawling
    def delete(self, context: Optional['IconScoreContext'], key: bytes):
        """Delete key from db

        :param context:
        :param key: key to delete from db
        """
        if not _is_db_writable_on_context(context):
            raise DatabaseException('delete is not allowed')

        context_type = _get_context_type(context)

        if context_type == IconScoreContextType.INVOKE:
            context.tx_batch[key] = None
        else:
            self.key_value_db.delete(key)
示例#5
0
文件: db.py 项目: icona2/crawling
    def put(self, context: Optional['IconScoreContext'], key: bytes,
            value: Optional[bytes]) -> None:
        """put value to StateDB or catch according to contex type

        :param context:
        :param key:
        :param value:
        """
        if not _is_db_writable_on_context(context):
            raise DatabaseException('put is not allowed')

        context_type = _get_context_type(context)

        if context_type == IconScoreContextType.INVOKE:
            context.tx_batch[key] = value
        else:
            self.key_value_db.put(key, value)
示例#6
0
文件: db.py 项目: xgenvn/t-bears
    def delete(self, context, bytes_key: bytes) -> None:
        if not _is_db_writable_on_context(context):
            raise DatabaseException('delete is not allowed')

        if bytes_key in self._db:
            del self._db[bytes_key]
示例#7
0
文件: db.py 项目: xgenvn/t-bears
    def put(self, context, bytes_key: bytes, value: value_type) -> None:
        if not _is_db_writable_on_context(context):
            raise DatabaseException('put is not allowed')

        self._db[bytes_key] = value