SQLalchemy查询中的正则表达式?

dpq*_*dpq 23 python regex sqlalchemy

是否可以以类似的方式使用正则表达式session.query(MyObject).filter_by(REGEX)

如果没有,我如何使用sqlAlchemy检索具有以某个值开头的varchar PK的记录(例如,所有那些城市字段以"SA"开头的记录)?谢谢.

dpq*_*dpq 38

我想我明白了:

session.query(Object).filter(Object.column.op('regexp')(REGEX))
Run Code Online (Sandbox Code Playgroud)

  • 这个答案只适用于MySQL,它使用`REGEXP`作为比较运算符.你必须在其他数据库中更改它,如果数据库有一个正则表达式比较运算符(而不是一个函数),它只会像这样工作.在PostgreSQL中,你可以使用`op('〜')`. (16认同)

小智 11

从 SqlAlchemy 1.4 开始,有一个内置的正则表达式运算符regexp_match

  • 请添加更多详细信息以扩展您的答案,例如工作代码或文档引用。 (2认同)

Ale*_*lex 5

作为记录,您也可以执行与SQLAlchemy中Paulo Scardine的回答基本相同的语法;

session.query(Object).filter(Object.column.like('something%'))
Run Code Online (Sandbox Code Playgroud)

  • 这是一个“喜欢”,而不是问题中要求的“正则表达式”。 (8认同)
  • 为什么投反对票?*字面上*我所做的只是提供一个 SQLAlchemy 翻译来描述另一个答案。我并不是说它更好,也不是说我正在翻译的答案是最好的解决方案。如果有错误的评论和正确的(很可能有),但不要随意投票! (2认同)
  • 尽管这没有使用正则表达式(按照OP的要求),但它为实际问题提供了解决方案。OP 不需要*使用正则表达式来解决给定的问题,所以这对于他们的具体问题仍然有帮助。 (2认同)
  • @KerryJones OP询问了正则表达式*但也指定*“如果没有,我怎么能......”。OP 想要解决一个问题,正则表达式是他们的想法,他们要求替代方案,这个答案提供了一个**非常合理的**,适合他们所询问的 ORM。[StackOverflow 自己的指南](https://stackoverflow.com/help/how-to-answer) 明确鼓励这种类型的答案,以编写好的答案。标题没有准确反映他们的问题,这里关注正则表达式是 **XY 问题**的完美示例。 (2认同)