postgresql - 在 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。
解决方案
这应该适合你:
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
推荐阅读
- c - 在我使用 calloc 后,检查列表数组中单个列表是否为空的最佳方法是什么?
- c# - Entity Framework Core 创建多值属性(里面的项目列表和实体)
- c# - 按可空导航属性的属性分组时如何传播导航属性的空值
- python-3.x - 如何在python中修改嵌套pymongo字典记录中的字段
- strapi - Strapi 中的数据库连接测试失败
- azure - 错误 MT2002:无法解析程序集:Microsoft.WindowsAzure.MobileServices.iOS
- android - 在富文本中动态更改文本的颜色/粗细/字体
- mysql - Mysql 5.7:重新调整不存在的 id
- c++ - 'class MainClass' 没有名为 'procent' 的成员
- python - 如何让我的程序被 Windows Protector 和 AntiViruses 识别?