试图在连接到mysql数据库的sqlalchemy查询中找到实现RLIKE的方法。
我们的主机名非常复杂,因此,对我们来说,使用LIKE不是一种选择。我有几十个SQL查询,它们成功地使用RLIKE查询安装了各种包的主机组,但不确定sqlalchemy如何/是否支持它。
我的子句如下所示:
(device RLIKE '^ab-.*-ceaa-b[0-9]{2}$' and package = 'package-rpm')
OR
(device RLIKE '^ab-.*-cezz-b[0-9]{2}$' and package = 'other-package-rpm')我是python的初学者,正在取得一些进展,但我需要在脚本中实现RLIKE或类似的东西:
conditions = []
conditions.append(and_(Package.device.like('ab-pp-%'), Package.package == 'package-rpm'))
conditions.append(and_(Package.device.like('ab-zz-%'), Package.package == 'package-rpm'))
Package.query.filter(or_(*conditions)).all()发布于 2019-11-18 16:31:05
您可以在任意函数中使用SQLAlchemy,方法是使用op方法:
conditions.append(and_(Package.device.op('rlike')('^ab-.*-ceaa-b[0-9]{2}$')), Package.package == 'package-rpm'))https://stackoverflow.com/questions/58918059
复制相似问题