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

Postgresql 如何在y中使用x,其中y是整数的列表或查询,postgresql,python-3.6,peewee,Postgresql,Python 3.6,Peewee,如果是整数,如何使用.in_uu进行选择?当我尝试插入一个整数时,我得到一个错误 我的列是数组和整数 #My try check = await db.execute(MarriagePlayer.select() .where( (MarriagePlayer.male_childrens.in_([1,2])) | (MarriagePlayer.woman_childrens.in_([1]), MarriagePlayer.chat_id == msg.

如果是整数,如何使用.in_uu进行选择?当我尝试插入一个整数时,我得到一个错误 我的列是数组和整数

#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)

TypeError:“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_儿童
列是数组。您可能希望使用
.contains()
/
.contains\u any()
方法,而不是
。在\u()
中,您遇到了运算符优先级问题。试着拆开碎片,你会看到发生了什么:

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_儿童
列是数组。您可能希望使用
.contains()
/
方法而不是
。在
.in()
中,我尝试执行此代码,但我遇到了相同的问题
part1=MarriagePlayer.male\u childrens.in([1,2])check=wait db.execute(MarriagePlayer.select().where(part1))
我刚刚更新。没有意识到您正在使用数组。我尝试执行此代码,但遇到了相同的问题
part1=MarriagePlayer.male\u childrens.in_u([1,2])check=wait db.execute(MarriagePlayer.select().where(part1))
我刚刚更新。我不知道你在使用阵列。