def store(self, uri, payload, headers, data):
hashcode = self.make_hashcode(uri, payload, headers)<EOL>payload_dump = pickle.dumps(payload, <NUM_LIT:0>)<EOL>headers_dump = pickle.dumps(headers, <NUM_LIT:0>)<EOL>data_dump = pickle.dumps(data, <NUM_LIT:0>)<EOL>logger.debug("<STR_LIT>",<EOL>hashcode, uri, payload, headers, self.archive_path)<EOL>try:<EOL><INDENT>cursor = self._db.cursor()<EOL>insert_stmt = "<STR_LIT>" + self.ARCHIVE_TABLE + "<STR_LIT>""<STR_LIT>""<STR_LIT>"<EOL>cursor.execute(insert_stmt, (None, hashcode, uri,<EOL>payload_dump, headers_dump, data_dump))<EOL>self._db.commit()<EOL>cursor.close()<EOL><DEDENT>except sqlite3.IntegrityError as e:<EOL><INDENT>msg = "<STR_LIT>" % hashcode<EOL>raise ArchiveError(cause=msg)<EOL><DEDENT>except sqlite3.DatabaseError as e:<EOL><INDENT>msg = "<STR_LIT>" % str(e)<EOL>raise ArchiveError(cause=msg)<EOL><DEDENT>logger.debug("<STR_LIT>", hashcode, self.archive_path)<EOL>
Store a raw item in this archive.

        The method will store `data` content in this archive. The unique
        identifier for that item will be generated using the rest of the
        parameters.

        :param uri: request URI
        :param payload: request payload
        :param headers: request headers
        :param data: data to store in this archive

        :raises ArchiveError: when an error occurs storing the given data