SQLAlchemy 中的 PostgreSQL NOT 运算符

PostgreSQL NOT operator in SQLAlchemy

我想通过一个查询实现切换布尔标志。

我的查询如下所示:

session.query(Foo).update({"status": SOME_NOT_OPERATOR})

SQLAlchemy 是否支持 PostgreSQL NOT (https://www.postgresql.org/docs/current/functions-logical.html) 运算符。这如何以不同的方式实现?

As Adrian Klaver points out in their , SQLAlchemy's not_ 运算符将切换值。所有这些陈述都是等价的:

# 1.x style
session.query(Foo).update({'status': ~Foo.status})
session.query(Foo).update({'status': not_(Foo.status)})
# 2.0 style
session.execute(update(Foo).values(status=~Foo.status))
session.execute(update(Foo).values(status=not_(Foo.status)))

将生成此 SQL:

UPDATE foo SET status=NOT foo.status