2017-01-18 4 views
0

私はSQLAlchemyの新人ですので、基本的な質問でなければならないことを許してください。別のテーブルの値に基づいた単純なSQLAlchemyアップデートテーブル

データベーステーブルproperties(オブジェクトPropertyとしてSQLALchemyにマップされています)には、フィールドMEBIDが含まれています。私は別のテーブルmebs(SQLAlchemyにMEBとしてマップされている)を持っています。私はproperties.PostCode == mebs.PostCodeのmebs.idにproperties.MEBIDフィールドを設定したいと思います。

は、私は、コマンド

update properties, mebs set properties.mebid = mebs.id where mebs.PostCode = properties.PostCode 

を使用してSQLで簡単にこれを行うことができますが、SQLAlchemyの中でそれをやって苦労しています。私は、コマンド

session.query(Property, MEB).\ 
    filter(Property.PostCode == MEB.PostCode).\ 
    update({Property.MEBID : MEB.id}) 

をしようとした場合、私は

InvalidRequestError: This operation requires only one Table or entity be specified as the target. 

を取得し、私はそれが、このような基本的な操作だと、これは基本的でなければならないことを知っているが、どのように行うのうち動作することはできません。

答えて

1

は更新するには:

for prop, meb in session.query(Property, MEB).filter(Property.PostCode == MEB.PostCode).all(): 
    prop.MEBID=meb.id 
    session.add(prop) 
関連する問題