2015-04-16 88 views
0

這個工作在PSQL控制檯:正則表達式從django.db.connection搜索?

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

'code'是什麼意思?這個變量的價值是什麼? – ForceBru

+0

對不起,添加。基本上它只是一個字符串。 – Richard

回答

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的,你必須正確格式的字符串。

+0

你是完全正確的。非常感謝。 – Richard