首页 > 解决方案 > 在 SQLAlchemy ORM 中表达 Postgresql VALUES 命令?

问题描述

如何表达查询

VALUES ('alice'), ('bob') EXCEPT ALL SELECT name FROM users;

(即“列出不在表'users'中的VALUES中的所有名称”)在SQLAlchemy ORM中?换句话说,下面的语句“X”应该是什么样的?

def check_for_existence_of_all_users_in_list(list):
    logger.debug(f"checking that each user in {list} is in the database")
    query = X(list)

(有 sqlalchemy.values 可以这样使用:

  query = sa.values(sa.column('name', sa.String)).data(['alice', 'bob'])  # .???

但它似乎只能用作 INSERT 或 UPDATE 的参数。)

我正在使用 SQLAlchemy 1.4.4。

标签: postgresqlsqlalchemyorm

解决方案


这应该适合你:

user_names = ['alice', 'bob']
q = values(column('name', String), name="temp_names").data([(_,) for _ in user_names])
query = select(q).except_all(select(users.c.name))  # 'users' is Table instance

推荐阅读