用命令sqlalchemy更新

xdnvmnnf  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(329)

我需要更新一个 column 在表中使用 sqlalchemyorder_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\ U by()时,无法调用query.update()或query.delete()
有没有办法用 sqlalchmey ?
编辑:需要顺序,因为列是唯一的

ws51t4hk

ws51t4hk1#

当初始化uniqueconstraint时,是否尝试过将param deferable=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')

相关问题