Peewee:如何使用一组元组进行查询?

Peewee: how to make a query with a set of tuple?

我的SQLtable:

CREATE TABLE Message (
    message_id varchar(40) PRIMARY KEY NOT NULL,
    channel_id integer NOT NULL,
    user_id integer NOT NULL,
) 

我有一组元组,第一项是 user_id 字段,第二项是 channel_id 字段。集合示例:

user_channel_set = {(156, 23), (235, 15), (156, 15)} 

我想知道是否有办法做到这一点,但只有一个查询。

for t in user_channel_set:
    Message.select().where((Message.user_id == t[0]) & (Message.channel_id == t[1]))

问得好。您可以尝试使用 VALUES 语句和常见的 table 表达式。

val_list = ValuesList(list(user_channel_set)).cte('vals', columns=['uid', 'cid'])
query = (Message
         .select()
         .join(val_list, on=(
             (Message.user_id == val_list.c.uid) &
             (Message.channel_id == val_list.c.cid)))
         .with_cte(val_list))