Python SQLalchemy查询中的正则表达式?

Python SQLalchemy查询中的正则表达式?,python,regex,sqlalchemy,Python,Regex,Sqlalchemy,是否可以以类似于session.query(MyObject).filter_by(regex)的方式使用正则表达式 如果不是,我如何使用sqlAlchemy检索具有以特定值开头的varchar PK的记录(例如,所有其城市字段以“SA”开头的记录)?谢谢。[免责声明:无正则表达式] 我回答的问题是“如何使用sqlAlchemy检索具有以某个值开头的varchar PK的记录”,因为对于这个简单的用例,类似于的可能既便宜又便于移植(要求正则表达式似乎是其表现形式) 在SQLAlquemy中(借用

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


如果不是,我如何使用sqlAlchemy检索具有以特定值开头的varchar PK的记录(例如,所有其城市字段以“SA”开头的记录)?谢谢。

[免责声明:无正则表达式]

我回答的问题是“如何使用sqlAlchemy检索具有以某个值开头的varchar PK的记录”,因为对于这个简单的用例,类似于的
可能既便宜又便于移植(要求正则表达式似乎是其表现形式)

在SQLAlquemy中(借用Alex):

在SqlSoup中,我使用:

db.table.filter(db.table.column.like('something%')) 
我想我明白了:

session.query(Object).filter(Object.column.op('regexp')(REGEX))

为了记录在案,您也可以使用与Paulo Scardine在SQLAlchemy中的答案基本相同的语法

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

为什么要投否决票?对于以“something”开头的字符串来说,正则表达式显然是过火了。此外,并非每个数据库都支持本机正则表达式,但每个SQL数据库都支持“like”语句-服务器端操作总是更好。@Sylvestre…而且成本更高,可移植性更差。@UloPe为该用例请求正则表达式是。此外,问题并没有说“请,只有正则表达式回答”。真正的问题和这里回答的问题是“如何使用sqlAlchemy检索具有以特定值开头的varchar PK的记录”。如果使用Oracle,您将希望使用此答案为什么要进行向下投票?实际上,我所做的只是提供一个SQLAlchemy翻译来描述另一个答案。我并不是说它更好,甚至不是说我翻译的答案是最好的解决方案。如果有错误的评论和正确的(很可能有),但不要随意投票!这是一个“like”,而不是问题中所要求的“regex”。尽管这不是使用regex(按照OP的要求),但它提供了实际问题的解决方案。OP不需要为给定的问题使用正则表达式,因此这对他们的特定问题仍然有帮助,@KerryJones OP询问了正则表达式,但也指定了“如果不,我如何…”。OP想要解决一个问题,regex是他们所想的方式,他们要求替代方案,这个答案提供了一个非常合理的答案,符合他们所要求的ORM。这种类型的答案是明确鼓励在写好的答案。标题并没有准确地反映他们的问题,这里关注正则表达式是XY问题的一个完美例子。这是事实,因为向下投票。这个答案只适用于MySQL,它使用
REGEXP
作为比较运算符。您必须在其他数据库中更改它,并且只有当数据库具有正则表达式比较运算符(例如,与函数相反)时,它才会这样工作。在PostgreSQL中,可以使用
op(“~”)
session.query(Object).filter(Object.column.like('something%'))