2016-11-23 33 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))', –