使用SQLAlchemy进行MySQL Regex查询中的括号

时间:2016-02-08 19:55:54

标签: python mysql regex sqlalchemy flask-sqlalchemy

我有一个python应用程序,它使用SQLAlchemy搜索数据库,如下所示:

query = raw_input('Search: ')
db.session.query(Posts).filter(Posts.name.op('REGEXP')(r'[[:<:]]{}'.format(query))).all()

这适用于我的MySQL数据库和大多数字符,但我发现一些搜索不起作用。

  • 在返回错误后在某处包含(但没有)的搜索
  • 包含Бэдц等外来字符的搜索也会返回错误

是否有支持各种搜索查询的解决方案,包括特殊字符和外来字符?感谢。

1 个答案:

答案 0 :(得分:0)

  

在返回错误

后包含(不带)跟踪它的搜索

这种情况正在发生,因为()在正则表达式中具有特殊含义。例如,如果有一个没有结束符的左括号,则该表达式无效:

>>> re.compile(r"test (")
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  ...
error: unbalanced parenthesis

您需要 escape查询

import re

query = re.escape(query)