Ich bin derzeit mit dem Primärindex für eine Liste der Schlüssel in einer Cloudant Datenbank abzufragen:wie _all_docs Primärindex mit Schlüsselliste mit Python-Cloudant aufrufen?
class DAO:
@staticmethod
def get_movie_names(movie_ids: List[int]) -> Dict[int, str]:
# The movie_ids in cloudant are stored as strings so convert to
# correct format for querying
movie_ids = [ str(id) for id in movie_ids ]
keys = urllib.parse.quote_plus(json.dumps(movie_ids))
# The movie id is stored in the _id field, so we query it
# using the 'keys' parameter
end_point = '{0}/{1}/_all_docs?keys={2}&include_docs=true'.format (
CL_URL, CL_MOVIEDB, keys
)
response = cloudant_client.r_session.get(end_point)
movie_data = json.loads(response.text)
movie_names = {}
if 'rows' in movie_data:
for row in movie_data['rows']:
if 'doc' in row:
movie_id = int(row['key'])
movie_name = row['doc']['name']
movie_names[movie_id] = movie_name
return movie_names
Es sieht aus, als ob ich in der Lage sein, kann dies die cloudant.result.Result Verwendung zu erreichen. Wenn ich die Dokumentation richtig verstanden habe, werden alle Dokumente zurückgegeben und Sie können die zurückgegebenen Ergebnisse filtern. Ich möchte jedoch filtern, indem ich Parameter an die Cloudant-Anfrage übergebe, sodass ich nur die Daten zurücksende, die mich interessieren. Ist das möglich?
Es gibt auch den custom_result Kontext-Manager, dass das CouchDatabase/CloudantDatabase Objekt liefert, die den zusätzlichen Vorteil der Verpackung um den Anruf zu all_docs als Ergebnis hat. – alfinkel24