SELECT * FROM nets WHERE ip >> '10.10.10.10' так просто сформулировать на sqlalchemy не получится. Для этого нужно переопределить оператор >> у типа данных CIDR и создавать запросы с его помощью:
class Cidr(postgresql.CIDR):
'''
Делаем свой тип колонки для того, чтобы была возможность использовать
операторы >> и <<
'''
class comparator_factory(postgresql.CIDR.Comparator):
def __lshift__(self, other):
return self.op("<<")(other)
def __rshift__(self, other):
return self.op(">>")(other)
class Net(Base):
__tablename__ = 'nets'
id = Column(Integer, primary_key=True)
ip = Column(Cidr)
db.session.query(Net).filter(Net.ip>>'10.10.10.10')
Комментариев нет:
Отправить комментарий