def get_open_options(self): ''' Get the options for opening a database as well as creating all the relevant data-structures needed for operation. :returns: The database open options. ''' options = LDB.leveldb_options_create() self.cache = LDB.leveldb_cache_create_lru(self.options.get('cache_block_size', 8 * 1024 * 1024)) self.filter_policy = LDB.leveldb_filterpolicy_create_bloom(self.options.get('bloom_filter_size', 10)) self.environment = LDB.leveldb_create_default_env() LDB.leveldb_options_set_create_if_missing(options, self.options.get('create_if_missing', True)) LDB.leveldb_options_set_error_if_exists(options, self.options.get('error_if_exists', False)) LDB.leveldb_options_set_paranoid_checks(options, self.options.get('paranoid_checks', False)) LDB.leveldb_options_set_write_buffer_size(options, self.options.get('write_buffer_size', 32 * 1024 * 1024)) LDB.leveldb_options_set_max_open_files(options, self.options.get('max_open_files', 256)) LDB.leveldb_options_set_block_size(options, self.options.get('block_size', 4 * 1024)) LDB.leveldb_options_set_block_restart_interval(options, self.options.get('block_restart_interval', 16)) LDB.leveldb_options_set_compression(options, self.options.get('compression', True)) LDB.leveldb_options_set_cache(options, self.cache) LDB.leveldb_options_set_filter_policy(options, self.filter_policy) LDB.leveldb_options_set_env(options, self.environment) #LDB.leveldb_options_set_info_log(options, self.options.get('info_log')) just use default if self.options.get('comparator', None): LDB.leveldb_options_set_comparator(options, self.options.get('comparator').comparator) return options