SQLAlchemy Match Against子句

时间:2012-10-23 09:40:16

标签: python sqlalchemy

我有带全文索引的MySQL表。我想知道如何使用MATCH ... AGAINST()与SQLAlchemy。你有一些例子吗?

...
    trs = dbsession.query(Trans).filter(Trans.client_id==user_id)
    if search and search != '':
        trs = trs.filter(or_(Trans.transcribe.like('%'+search+'%'), Trans.lang_name.like('%'+search+'%')))
...

我想用'MATCH / AGAINST IN BOOLEAN MODE'结构替换LIKE,但我不知道如何

1 个答案:

答案 0 :(得分:3)

您只需要使用以下条款:

Trans.lang_name.match(str_to_match)

其中str_to_match是您要匹配的字符串。

这将(对于MySQL方言)编译为(假设Trans模型表名称为trans且模型属性与列名称匹配):

'MATCH(trans.lang_name) AGAINST (%s IN BOOLEAN MODE)' % str_to_match