有没有SQLlalchemy ORM过滤器运算符可检查常见的列表元素(换句话说,用于重叠的元素)?

时间:2019-05-22 10:09:06

标签: python sqlalchemy

我正在一个应用程序中创建多个对象。创建新容器对象(自身)时,我使用SQLalchemy代码来验证对象的创​​建是否有效。这些验证之一是检查是否不存在具有相同“名称”属性和“设备”属性具有公共列表元素的特定对象。

例如我正在创建一个容器对象,该对象具有“名称”属性和“设备”属性。 “名称”属性只是字符串类型,而“设备”属性则是数组类型。 如果该容器名称已经存在,并且如果已经使用相同名称创建的容器包含的设备与所创建容器的设备之一相同,则不允许创建该容器。使用相同名称的过滤器已经可以使用,但是问题在于为通用设备创建过滤器。

换句话说,我正在尝试创建一个过滤器,以检查船只设备之间的公用列表元素。有人知道答案吗?

if session.query(Vessel)
            .filter(
                and_(
                    func.lower(Vessel.name) == self.name.lower(),
                    Vessel.equipment_types.in_(self.equipment_types),
                )
            )
            .first():

我不希望这段代码能用,因为这是一对多的比较,但是我找不到多对多的比较(因此才提出这个问题)。

0 个答案:

没有答案