如何使用 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_()
.
如果 .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_()
.