SQLAlchemy查询按相关表中的字段值过滤

时间:2018-09-19 21:17:31

标签: python sqlalchemy flask-sqlalchemy

我尝试获取类型不是SSH Agent的设备。请帮助写一个查询。我尝试的解决方案:

'TYPE_BLADE_SERVER'

因为重命名为result = Device.query.filter(DeviceGroup.type != ModelType.TYPE_BLADE_SERVER).all() 的{​​{1}},所以没有过滤device_group表。来自sqlalchemy的sql查询:

device_group

有效的解决方案,但类似于sql硬代码:

device_group_1

我的模特:

SELECT * FROM device_group, device
LEFT OUTER JOIN device_model AS device_model_1 ON device_model_1.id = device.model_id
LEFT OUTER JOIN device_group AS device_group_1 ON device_group_1.id = device_model_1.group_id 
WHERE device_group.type != % (type_1)s ; {'type_1': 'TYPE_BLADE_SERVER'}

2 个答案:

答案 0 :(得分:0)

您不需要_

from sqlalchemy import not_
result = Device.query.filter(not_(DeviceGroup.type == ModelType.TYPE_BLADE_SERVER)).all()
or
result = Device.query.filter(~DeviceGroup.type == ModelType.TYPE_BLADE_SERVER)

答案 1 :(得分:0)