这适用于psql控制台:
SELECT * FROM chemical WHERE name ~* 'statin';
但不是来自Django内部:
from django.db import connection
cursor = connection.cursor()
code = 'statin'
query = 'SELECT * FROM chemical WHERE name ~* %s'
print query
cursor.execute(query, (code,))
print cursor.fetchall()
这在Django控制台上打印出来:
SELECT * FROM chemical WHERE name ~* %s
但它返回一个空的查询集。
如何从Django内部进行正则表达式搜索?我想我需要逃避或忘记一些事情。
不幸的是chemical
是物化视图,因此我无法使用Django ORM。
答案 0 :(得分:1)
我想,你需要这个:
from django.db import connection
cursor = connection.cursor()
code = 'statin'
query = 'SELECT * FROM chemical WHERE name ~* {}'
print query.format(code)
cursor.execute(query.format(code))
print cursor.fetchall()
与Django没有任何关系,你必须正确格式化字符串。
答案 1 :(得分:0)
实际上,Django ORM可以使用__regex
查找为您执行正则表达式查找,如下所示:https://docs.djangoproject.com/en/1.8/ref/models/querysets/#regex
或者,正如您在那里一样,使用__iregex
查找不区分大小写的正则表达式:https://docs.djangoproject.com/en/1.8/ref/models/querysets/#iregex