Ich arbeite ein Projekt, in dem ich einige Benutzereingabe durch Web-Anwendung erhalten soll, und diese Daten an Cloudant DB senden. Ich benutze Python für die Verwendung case.Below ist der Beispielcode ::Probleme beim Einfügen von Daten in cloudant DB
import requests
import json
dict_key ={}
key = frozenset(dict_key.items())
doc={
{
"_ID":"1",
"COORD1":"1,1",
"COORD2":"1,2",
"COORD3":"2,1",
"COORD4":"2,2",
"AREA":"1",
"ONAME":"abc",
"STYPE":"black",
"CROPNAME":"paddy",
"CROPPHASE":"initial",
"CROPSTARTDATE":"01-01-2017",
"CROPTYPE":"temp",
"CROPTITLE":"rice",
"HREADYDATE":"06-03-2017",
"CROPPRICE":"1000",
"WATERRQ":"1000",
"WATERSRC":"borewell"
}
}
auth = ('uid', 'pwd')
headers = {'Content-type': 'application/json'}
post_url = "server_IP".format(auth[0])
req = requests.put(post_url, auth=auth,headers=headers, data=json.dumps(doc))
#req = requests.get(post_url, auth=auth)
print json.dumps(req.json(), indent=1)
Wenn ich den Code laufen lasse, ich bin der unten Fehler Geting ::
"WATERSRC":"borewell"
TypeError: unhashable type: 'dict'
ich etwas gesucht, und unter stackflow Link als Interessent Auflösung gefunden
http://stackoverflow.com/questions/13264511/typeerror-unhashable-type-dict
er sagt, dass „um einen dict als Schlüssel zu verwenden, müssen Sie es in etwas zu verwandeln, die erste gehasht werden kann. Wenn die dict Sie verwenden möchten, als Schlüssel besteht von nur unveränderlichen Werten, Sie können eine hashable Darstellung es wie folgt erstellen:
key = frozenset(dict_key.items())"
ich unten Rückfragen ::
1) Ich habe versucht, über sie in meinem Code verwenden, aber ich bin nicht sicher, ob ich es benutzt haben korrekt.
2) Um die Daten in die Cloudant DB zu setzen, verwende ich Python Modul "Anfragen". Im Code verwende ich die unten Linie, die die Daten in der DB zu setzen:
req = requests.put(post_url, auth=auth,headers=headers, data=json.dumps(doc))
Aber ich bin unten Störung zu erhalten:
"reason": "Only GET,HEAD,POST allowed"
ich auf dem gesuchten als gut, und ich fand IBM Bluemix Dokument darüber wie folgt
https://console.ng.bluemix.net/docs/services/Cloudant/basics/index.html#cloudant-basics
als ich das Dokument bezeichnen, kann ich sagen, dass ich die richtige Wahl verwenden. Aber vielleicht liege ich falsch.