如何使用 x IN y,其中 y 是列表或整数查询

How to use x IN y, where y is a list or query for integer

如果 .in_ 是整数,我该如何选择?当我尝试插入一个整数时,出现错误 我的专栏是数组和整数。

#My try
check = await db.execute(MarriagePlayer.select()
    .where(
    (MarriagePlayer.male_childrens.in_([1,2])) |
    (MarriagePlayer.woman_childrens.in_([1]),
     MarriagePlayer.chat_id == msg.receiver_id)))

#Error
site-packages\playhouse\postgres_ext.py", line 192, in db_value
return value if isinstance(value, list) else list(value)

类型错误:'int'对象不可迭代

您 运行 陷入运算符优先级问题。尝试分解碎片,你会看到发生了什么:

part1 = MarriagePlayer.male_childrens.in_([1,2])
part2 = MarriagePlayer.woman_childrens.in_([1])
part3 = MarriagePlayer.chat_id == msg.receiver_id

check = await db.execute(MarriagePlayer.select().where(part1 | (part2 & part3)))

编辑:我刚刚重读并意识到您的 x_childrens 列是 数组 。您可能希望使用 .contains() / .contains_any() 方法而不是 .in_().