2016-11-23 36 views
0

我想知道如果DAL支持選擇與JSON,或者如果有一個黑客,使其能夠選擇JSON領域。我能做到以下幾點:Web2py DAL /內置選擇與JSON

SELECT count(id) FROM my_table WHERE my_json_colum::json->>'form_id' = '%s';" % (dummy_string) 
my_count = db.executesql(query) 
return my_count 

然而,docs表明這不是reliabe:

在這種情況下,返回值不解析或由DAL轉換和格式取決於對特定的數據庫驅動程序。

我無法找到任何建議支持此文檔的文檔。更具體地說,當我運行上面的代碼時,它只返回字母H.是否有一種解決方法(或者更好,但我錯過了一個合法的方式)來使DAL與JSON一起工作?

回答

1

DAL能夠將JSON數據保存在單個字段中,但它不提供查詢JSON數據的特定屬性的機制,因爲這需要RDBMS本身內的特殊功能,而大多數數據庫不支持該功能。

+0

是否有任何解決此問題的方法,或者我只需使用原始SQL或進行子查詢,然後搜索行? –

+0

您正在使用哪種RDBMS?它(及其相關的Python驅動程序)是否支持您正在使用的語法?如果是這樣,'executeql'會正常工作。 – Anthony

+0

是的,executionql以'select * ...'爲例,但是它沒有使用'select count(*)...'。最後,我只使用'query =「select * ...」 len(db.executesql(query))', –