Python 列值作为SQLAlchemy中的'REGEXP'模式?
在SQLAlchemy中是否可以将列值用作Python 列值作为SQLAlchemy中的'REGEXP'模式?,python,mysql,sqlalchemy,Python,Mysql,Sqlalchemy,在SQLAlchemy中是否可以将列值用作REGEXP模式 我有一张桌子: CREATE TABLE my_table ( id int(11) unsigned NOT NULL AUTO_INCREMENT, column int(200) DEFAULT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 具有两个示例行: INSERT INTO my_table (id, column) VALUES (1, '^S
REGEXP
模式
我有一张桌子:
CREATE TABLE my_table (
id int(11) unsigned NOT NULL AUTO_INCREMENT,
column int(200) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
具有两个示例行:
INSERT INTO my_table (id, column)
VALUES
(1, '^S[[:digit:]]{10}$'),
(2, '^M[[:digit:]]{8}$');
在mysql中,您可以做到:
SELECT id FROM my_table WHERE 'S1803020001' REGEXP my_table.column;
+----+
| id |
+----+
| 1 |
+----+
我正在寻找一种在SQLAlchemy中实现这一点的方法
这就是我如何在模型中使用literalregexp
:
MyTable.query.filter(MyTable.column.op('regexp')(r'pattern'))
但这次我正在寻找一种方法来交换“pattern”和“MyTable.column”
我知道,由于各种底层数据库后端,可能不支持它,因为并非所有后端都支持非文本regexp
模式。尽管如此,我还是很好奇这是否以及如何实现。使用简单的反转操作:
literal('foo').op('regexp')(MyTable.column)
literal('foo').op('regexp')(MyTable.column)
,可能吧。@IljaEverilä谢谢,效果很好!考虑发表一个答案,这样我就可以接受它。