Lar*_*ell 12 python sqlalchemy
这里真的有两个问题.
如果我像这样运行sqlalchemy查询:
sensors = session.query(Sensor).filter(Sensor.serial_number.in_(data['sensor_serial_numbers'])).all()
Run Code Online (Sandbox Code Playgroud)
然后,我可以使用结果集(传感器)更新所有这些行中的列吗?我无法弄清楚它的语法,所以我尝试这样做:
session.query(Sensor).filter(Sensor.serial_number.in_(data['sensor_serial_numbers'])).update({'system_id': system.id})
Run Code Online (Sandbox Code Playgroud)
但是,在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.
Run Code Online (Sandbox Code Playgroud)
我认为这必须是因为in_子句,因为我在使用相同的构造之前已经完成了更新,但它们没有in_子句.如何用in_做这样的更新?
kxx*_*ing 22
试试这个:
session.query(Sensor)\
.filter(Sensor.serial_number.in_(data['sensor_serial_numbers']))\
.update({'system_id': system.id}, synchronize_session='fetch')
Run Code Online (Sandbox Code Playgroud)
它在此记录:doc
默认值是evaluate哪个
直接在会话中的对象上用Python评估Query的条件.如果未实施标准评估,则会引发异常.