Python Peewee ORM——获取除其他查询中共享的行以外的所有行
我有两个查询,可用和活动 如果有一行处于活动状态,我希望将其从可用行中排除 请参阅下面我的尝试:Python Peewee ORM——获取除其他查询中共享的行以外的所有行,python,python-3.x,peewee,Python,Python 3.x,Peewee,我有两个查询,可用和活动 如果有一行处于活动状态,我希望将其从可用行中排除 请参阅下面我的尝试: active_params = (AvailParam .select() .join(AvailParamPhones) .join(Phone) .where(AvailParamPhones.phone == phone) .order_by(AvailParam.base_param.name)
active_params = (AvailParam
.select()
.join(AvailParamPhones)
.join(Phone)
.where(AvailParamPhones.phone == phone)
.order_by(AvailParam.base_param.name)
)
avail_params = (AvailParam
.select()
.join(AvailParamPhones, JOIN.LEFT_OUTER)
.where( AvailParam.select() << active_params )
.order_by(AvailParam.base_param.name)
)
active_params=(可用内存)
.选择()
.join(可用ramphones)
.加入(电话)
.where(可用ramphones.phone==电话)
.order_by(AvailParam.base_参数名称)
)
可用参数=(可用内存)
.选择()
.join(可用ramphones,join.LEFT_-OUTER)
.where(AvailParam.select()首先,使用“AvailParam.id.in_(active_参数)”…在in子句的左侧和右侧使用select是没有意义的:
avail_params = (AvailParam
.select()
.join(AvailParamPhones, JOIN.LEFT_OUTER)
.where( AvailParam.id.in_(active_params) )
.order_by(AvailParam.base_param.name))
如果不想在中,请在(…)中使用AvailParam.id.NOT_:
如果您的数据库支持除外的其他功能,则还可以使用复合选择查询。例如:
avail_params = (AvailParam
.select()
.join(AvailParamPhones, JOIN.LEFT_OUTER)
.where( AvailParam.id.not_in(active_params) )
.order_by(AvailParam.base_param.name))