我需要使用column
使用sqlalchemy
更新表格中的order_by
,它适用于mysql
,如下所示:
UPDATE `user` SET `order` = `order`+1 ORDER BY `order` DESC;
但如果我使用sqlalchemy
尝试:
session.query(User).order_by(User.order).update({'order': Table.order + 1})
我得到error
:
调用order_by()时无法调用Query.update()或Query.delete()
有没有办法使用sqlalchmey
实现它?
编辑: 需要订单,因为列是唯一的
答案 0 :(得分:0)
您是否尝试在初始化UniqueConstraint时设置param deferrable = True?
from sqlalchemy import UniqueConstraint
class User(Base):
__tablename__ = 'user'
name = Column('name', String, unique=True),
order = Column('order', Integer),
UniqueConstraint(
'order', name='unikey_order',
deferrable=True
)
# update directly
db.session.query(User).update({User.order: User.order + 1}, synchronize_session='fetch')