7
ここでは2つの質問があります。更新のためにsqlalchemy結果セットを使用
私はこのようなSQLAlchemyのクエリを実行した場合:
sensors = session.query(Sensor).filter(Sensor.serial_number.in_(data['sensor_serial_numbers'])).all()
を、私はそれらすべての行の列を更新するために、結果セット(センサー)を使用することはできますか?私はそのための構文を把握できなかったので、私はこれをやってみました:
session.query(Sensor).filter(Sensor.serial_number.in_(data['sensor_serial_numbers'])).update({'system_id': system.id})
しかし、それは仕方ダウンSQLAlchemyののボウルでの失敗:
File "/home/ecovent/pyenv0.3/local/lib/python2.7/site-packages/sqlalchemy/orm/persistence.py", line 949, in _do_pre_synchronize
"Could not evaluate current criteria in Python. "
InvalidRequestError: Could not evaluate current criteria in Python. Specify 'fetch' or False for the synchronize_session parameter.
私はそれが原因であることが必要だと思いますin_句を使用していましたが、in_句はありませんでした。 in_でこのような更新をどうすればできますか?
ありがとうございました。これは機能します。しかし、なぜこのコードが 'synchronize_session'' session.query(ApplicationInstallation).filter_by(control_hub_id = hub_id).filter(ApplicationInstallation.removal_date == None).update({'removal_date':utc_now} ) ' –
@LarryMartell' in_'を明示的に使うかどうかにかかわらず、MetaDataがメモリ内オブジェクトのどれが期限切れになるかを決めるためにselectクエリが必要です。エコーモードが有効になっている場合は選択クエリが表示されますが、なぜこのように設計されているのかわかりません。 – kxxoling
「基準の評価が実装されていない場合、例外が発生します」と誰でも説明できますか? *フェッチ*はかなりストレートですが、*評価*は私には少し謎があるようです... – Son