2016-08-21 3 views
2

Pythonモジュールを使用してRethinkDBで作業していますが、今はモデルを更新しようとしていますこの文を使用して:"rethinkdb.errors.ReqlServerCompileError:Pythonで.update()しようとすると2つの引数が必要ですが、1が見つかりました

results = rethink.table(model + "s").filter(id=results["id"]).update(data).run(g.rdb_conn) 

modelは、以前の機能で定義されているものです。このケースでは、quoteだとdata JSONデータの辞書です:

{ 
    "channelId": "paradigmshift3d", 
    "quoteId": "1", 
    "quote": "Testing 123", 
    "userId": "123", 
    "messageId": "456" 
} 

私は「ステートメントRethinkDB API referenceによると、 m を使用する場合はとする必要がありますが、そうではありません。私はいくつかの周りグーグルでやったが、この問題についての質問/問題があるように思えません

Traceback (most recent call last): 
    File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 2000, in __call__ 
    return self.wsgi_app(environ, start_response) 
    File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1991, in wsgi_app 
    response = self.make_response(self.handle_exception(e)) 
    File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1567, in handle_exception 
    reraise(exc_type, exc_value, tb) 
    File "/usr/local/lib/python3.5/dist-packages/flask/_compat.py", line 33, in reraise 
    raise value 
    File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1988, in wsgi_app 
    response = self.full_dispatch_request() 
    File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1641, in full_dispatch_request 
    rv = self.handle_user_exception(e) 
    File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1544, in handle_user_exception 
    reraise(exc_type, exc_value, tb) 
    File "/usr/local/lib/python3.5/dist-packages/flask/_compat.py", line 33, in reraise 
    raise value 
    File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1639, in full_dispatch_request 
    rv = self.dispatch_request() 
    File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1625, in dispatch_request 
    return self.view_functions[rule.endpoint](**req.view_args) 
    File "/home/nate/CactusAPI/views.py", line 309, in chan_quote 
    fields=fields 
    File "/home/nate/CactusAPI/helpers.py", line 403, in generate_response 
    ).update(data).run(g.rdb_conn) 
    File "/usr/local/lib/python3.5/dist-packages/remodel/monkey.py", line 18, in remodel_run 
    return run(self, c, **global_optargs) 
    File "/usr/local/lib/python3.5/dist-packages/rethinkdb/ast.py", line 118, in run 
    return c._start(self, **global_optargs) 
    File "/usr/local/lib/python3.5/dist-packages/rethinkdb/net.py", line 620, in _start 
    return self._instance.run_query(q, global_optargs.get('noreply', False)) 
    File "/usr/local/lib/python3.5/dist-packages/rethinkdb/net.py", line 466, in run_query 
    raise res.make_error(query) 
rethinkdb.errors.ReqlServerCompileError: Expected 2 arguments but found 1 in: 
r.table('quotes').filter(id='92c5160a-db57-4c3b-b2b2-2704cdcfc2b7').update(r.expr({'channelId': 'paradigmshift3d', 'quoteId': '1', 'quote': 'Testing 123', 'userId': '123', 'messageId': '456'})) 
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 

:ここでは完全なトレースバックです。

答えて

2

これは、1つの引数で.filter()を実行しようとしているために発生しました。 .filter()は辞書を予期しており、私は単にid = 92c5160a-db57-4c3b-b2b2-2704cdcfc2b7'を提供していました。

私は

rethink.table(model + "s").get(results["id"]).update(data).run(g.rdb_conn)

に周りのクエリを変更し、それが今働いています!

関連する問題