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))
我的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))