我正在使用 pysolr 将类列表保存到我的本地 solr 数据库中,我的问题是,当我使用 jsonpickle 对类列表进行编码时,查询被此消息拒绝,尽管如果我打印由 josnpickle 生成的 json,我得到将数据保存到solr中没问题。
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-2-3b6d9f42d0ec> in <module>()
27 json=str(jsonpickle.encode(coreData, unpicklable=False))
28 print(json)
---> 29 solr.add(json)
C:\ProgramData\Anaconda3\lib\site-packages\pysolr.py in add(self, docs, boost, fieldUpdates, commit, softCommit, commitWithin, waitFlush, waitSearcher, overwrite, handler)
878
879 for doc in docs:
--> 880 el = self._build_doc(doc, boost=boost, fieldUpdates=fieldUpdates)
881 message.append(el)
882
C:\ProgramData\Anaconda3\lib\site-packages\pysolr.py in _build_doc(self, doc, boost, fieldUpdates)
798 doc_elem = ElementTree.Element('doc')
799
--> 800 for key, value in doc.items():
801 if key == NESTED_DOC_KEY:
802 for child in value:
AttributeError: 'str' object has no attribute 'items'
我的代码:
from solrq import Q
import pysolr
import jsonpickle
from datetime import datetime, timedelta
from Model import Twitter
#conexion a solr
solr = pysolr.Solr('http://localhost:8983/solr/twitter')
#query
query = Q(label="none")
results = solr.search(query)
print("Saw {0} result(s).".format(len(results)))
#testing the query
for result in results:
print("-->".format(result['content']))
#creating a new class with data
twit = Twitter("000002","content text","some label")
#list of twitter classes
coreData=[]
coreData.append(twit)
#encoding to json
json=str(jsonpickle.encode(coreData, unpicklable=False))
print(json)
#saving to solr
solr.add(json)
这是在将类列表编码为 json 之后打印的内容,[{"content": "content text", "id": "000002", "label": "some label"}]
正如我之前所说,如果我用这个字符串替换 json 变量,则数据被保存,但我不知道为什么,即使像这样转换为字符串也会solr.add(str(json))
得到相同的错误消息。