Регулярные выражения в запросах SQLalchemy? - PullRequest
22 голосов
/ 06 ноября 2010

Можно ли использовать регулярное выражение аналогично session.query(MyObject).filter_by(REGEX)?

Если нет, как я могу использовать sqlAlchemy для извлечения записей, которые имеют varchar PK, начинающийся с определенного значения (например, все течье поле city начинается с "SA")?Спасибо.

Ответы [ 3 ]

35 голосов
/ 06 ноября 2010

Мне кажется, я понял:

session.query(Object).filter(Object.column.op('regexp')(REGEX))
4 голосов
/ 18 декабря 2012

Для записи, вы можете использовать тот же синтаксис, что и ответ Пауло Скардина в SQLAlchemy;

session.query(Object).filter(Object.column.like('something%'))
3 голосов
/ 06 ноября 2010

[ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: без регулярных выражений]

Я отвечаю на вопрос "как я могу использовать sqlAlchemy для извлечения записей, у которых varchar PK начинается с определенного значения", потому что для этого простого варианта использования a LIKE, вероятно, менее дорогой и более переносимый (запрос регулярных выражений выглядит как проявление проблемы XY ).

В SQLAlquemy (заимствование у Алекса):

session.query(Object).filter(Object.column.like('something%'))

В SqlSoup я использую:

db.table.filter(db.table.column.like('something%')) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...