Couchbase:python SDK "uppend"

Couchbase: python SDK "uppend"

我想做一个 "uppend_multi": 一个 append_multi (http://pythonhosted.org/couchbase/api/couchbase.html#couchbase.bucket.Bucket.append_multi),其中一些键可能不存在。如果它们尚不存在,则追加操作应该是插入操作。我怎样才能做到这一点? API 文档中没有任何内容表明这是受支持的,但我想这是一个非常常见的操作。

现在我正在这样做,但需要做的事情似乎很自然,我非常怀疑这是最好的方法:

def _uppend_multi(bucket, append_dict):
    reinsert_dict = {}
    try:
        bucket.append_multi(append_dict, format = couchbase.FMT_UTF8)

    except CouchbaseError as exc:
        for k, res in exc.all_results.items():
            if res.success:
                pass
            else:
                reinsert_dict[k] = append_dict[k]

    if len(reinsert_dict.keys()) > 0:
        bucket.insert_multi(reinsert_dict, format = couchbase.FMT_UTF8)

据我所知,在 Couchbase Python SDK 中没有这样的 "uppend" 操作,在较低级别的 C API (libcouchbase) 中也没有。

您目前正在做的可能是一个非常合理的解决方案。