2016-08-16 35 views
0

したがって、レコードのフィールドが(オブジェクトのリスト内の)オブジェクトのプロパティと等しい場合、クエリでforループを使用して結果を取得する必要があります。sqlalchemyクエリのforループを使用する

you = session.query(Users).filter_by(id=login_session['userid']).first() 

friends = session.query(Friends).filter_by(user_id=login_session['userid']).all() 

dashboard = session.query(Markers).filter(Markers.owner == f.friend_id for f in friends).all() 

しかし、私はこれを取得:これは私のコードです

Traceback (most recent call last): 
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1687, in wsgi_app 
    response = self.full_dispatch_request() 
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1360, in full_dispatch_request 
    rv = self.handle_user_exception(e) 
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1358, in full_dispatch_request 
    rv = self.dispatch_request() 
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1344, in dispatch_request 
    return self.view_functions[rule.endpoint](**req.view_args) 
    File "/home/pearadox6/travellr/app.py", line 423, in feed 
    dashboard = session.query(Markers).filter(Markers.owner == f.friend_id for f in friends).all() 
    File "<string>", line 1, in <lambda> 
    File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 51, in generate 
    fn(self, *args[1:], **kw) 
    File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 1216, in filter 
    criterion = expression._literal_as_text(criterion) 
    File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/expression.py", line 1521, in _literal_as_text 
    "SQL expression object or string expected." 
ArgumentError: SQL expression object or string expected. 

なぜ?

答えて

2

なぜですか?

あなたはfilterの引数としてジェネレータオブジェクトを渡すことはできませんので:

session.query(Markers).filter(Markers.owner == f.friend_id for f in friends).all() 

使用in_代わりにリストと:

session.query(Markers).filter(Markers.owner.in_([f.friend_id for f in friends)]).all() 
+0

ありがとう!出来た..... – ryanwaite28

関連する問題