-2

我需要更正此异常:“要解压的值太多”

这是我的源代码:如果我的数据库中不存在节点,或者如果它存在,我需要插入一个节点,我只添加与新节点的新关系:)

from tweepy import Stream
from tweepy import OAuthHandler
from tweepy.streaming import StreamListener
import time
import tweepy
import codecs
import json
from time import clock
from py2neo import neo4j
from py2neo import node,rel

cle = 'NorVSuR1eh0xdzkex4Y4mA'
clesecrete = 'F0AbGFdmMrwNhDKYGKzEQrqXTMEViKW'
jeton = '2234554214-sBqwoOCCEBVRktuCBeVdVhu6dluUfLSbecq'
jetonsecret = 'KaagCeViNedcHrSctsGoXNHq0nWTV6E4t6x4ddXrYzL'
graph_db = neo4j.GraphDatabaseService("http://localhost:7474/db/data/")

class listener(StreamListener):
     def on_data(self,data):

       try:
           if 'text' in data:

                tweet = json.loads(data)

                if tweet['in_reply_to_screen_name'] != None:
                    user_scr_Com=tweet['user']['screen_name']
                    print user_scr_Com
                    nod = list(graph_db.find("user_qui_a_commenter", "screen_name" , user_scr_Com ))
                    print nod

                         if len(nod)>0 :
                          for nd in nod:
#**#-My problem is here: I have a except Error, too many values to unpack**

                              User_Publication,text= graph_db.create(    
                                  node(Screen_name_User_Publication=tweet['in_reply_to_screen_name']),
                                  node(Commentaire=tweet['text'],Id_text=tweet['id_str'],source=tweet['source']),
                                  rel(nd, "user_a_commenter", 1),
                                  rel(1, "pour", 0))

                              User_Publication.add_label("user_status")
                              text.add_label("Commentaire")

                          else :
                         user_qui_a_commenter,User_Publication,text= graph_db.create(
                           node(Screen_name=tweet['user']['screen_name'],name=tweet['user']['name'],Id=tweet['user']['id_str'],Description=tweet['user']['description'],followers_count=tweet['user']['followers_count'],friends_count=tweet['user']['friends_count'],favourites_count=tweet['user']['favourites_count'],created_at=tweet['user']['created_at'],langue=tweet['user']['lang'],location=tweet['user']['location']),
                           node(Screen_name_User_Publication=tweet['in_reply_to_screen_name']),
                           node(Commentaire=tweet['text'],Id_text=tweet['id_str'],source=tweet['source']),
                           rel(0, "A_commenter_Pour", 1),
                           rel(0, "user_a_commenter", 2))
                         user_qui_a_commenter.add_label("user_qui_a_commenter")
                         User_Publication.add_label("user_status")
                         text.add_label("Commentaire")

谢谢你,我需要你的帮助

4

1 回答 1

1

该错误与此行相关

User_Publication,text= graph_db.create(...

你期望从结果中得到一个二元组,但你得到的还不止这些。

我对 Neo4j 一无所知,但从这里看起来你得到的项目数量与你放入的项目数量相同。如果是这样,那么你应该期待一个四元素元组。

# create two nodes with a connecting relationship
alice, bob, rel = graph_db.create(
    {"name": "Alice"}, {"name": "Bob"},
    (0, "KNOWS", 1, {"since": 2006})
)

所以这可以解决你的问题

User_Publication, text, var3, var4 = graph_db.create(...

看起来这将在稍后在您的代码中再次发生。将为关系以及节点返回项目。

于 2014-03-10T00:32:52.187 回答