Как использовать x IN y, где y - список или запрос на целое число - PullRequest
0 голосов
/ 27 апреля 2020

как сделать выбор с .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)

TypeError: объект 'int' не может быть повторен

1 Ответ

2 голосов
/ 27 апреля 2020

У вас проблемы с приоритетом операторов. Попробуйте разбить фрагменты, и вы увидите, что произошло:

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_().

...