gpt4 book ai didi

python - 使用 sqlalchemy 结果集进行更新

转载 作者:太空狗 更新时间:2023-10-29 18:19:09 26 4
gpt4 key购买 nike

这里真的有 2 个问题。

如果我像这样运行 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_ 进行这样的更新?

最佳答案

试试这个:

session.query(Sensor)\
.filter(Sensor.serial_number.in_(data['sensor_serial_numbers']))\
.update({'system_id': system.id}, synchronize_session='fetch')

记录在此处:doc

默认值为evaluate

Evaluate the Query’s criteria in Python straight on the objects in the session. If evaluation of the criteria isn’t implemented, an exception is raised.

关于python - 使用 sqlalchemy 结果集进行更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33703070/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com