Форум сайта python.su
SELECT net FROM nets WHERE net >> '10.0.0.0/8'
Офлайн
Где спросить то еще можно, никто sqlalchemy глубоко не использует? На stackoverflow тоже молчат.
Офлайн
session.query(Net).filter("net >> '10.0.0.0/8'")
Офлайн
govnokoderНу этот вариант я знаю и использую пока, но это тоже самое, что raw-sql. А мне надо названия колонки указывать с помощью переменных а не непосредственно в запросе.
session.query(Net).filter(“net >> ‘10.0.0.0/8’”)
Офлайн
Решил вот таким образом вручную добавив оператор для колонки:
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__ = 'test_nets' id = Column(Integer, primary_key=True) net = Column(Cidr) session.query(Net).filter(Net.net >> '10.0.0.0/8' )
Отредактировано plusplus (Май 24, 2013 13:00:49)
Офлайн