【问题标题】:Web2py DAL/built in select with JSONWeb2py DAL/内置选择 JSON
【发布时间】:2017-04-08 02:00:52
【问题描述】:

我想知道 DAL 是否支持使用 JSON 进行选择,或者是否有一个 hack 使其能够选择 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 表明这并不可靠:

在这种情况下,返回值不会被 DAL 解析或转换,格式取决于特定的数据库驱动程序。

我在文档中找不到任何建议对此提供支持的内容。更具体地说,当我运行上面的代码时,它只返回字母 H。是否有一种解决方法(或者我错过的更好但更合法的方法)让 DAL 与 JSON 一起工作?

【问题讨论】:

    标签: python web2py


    【解决方案1】:

    DAL 能够将 JSON 数据保存在单个字段中,但它不提供用于查询 JSON 数据的特定属性的机制,因为这需要 RDBMS 本身的特殊功能,大多数数据库不支持。

    【讨论】:

    • 是否有任何解决方法,或者我只需要使用原始 SQL 或进行子查询然后搜索行?
    • 您使用的是哪个 RDBMS?它(及其相关的 Python 驱动程序)是否支持您使用的语法?如果是这样,executesql 可以正常工作。
    • 是的,executesql 例如适用于select *...,但它不适用于select count(*)...。最后我只用了query = "select *..." len(db.executesql(query))
    • executesql 适用于任何查询——它只是通过 Python 驱动程序发送原始 SQL 并准确返回 Python 驱动程序返回的内容。很可能,您根本没有正确处理返回的数据。
    猜你喜欢
    • 2019-06-29
    • 1970-01-01
    • 2015-08-27
    • 2011-01-09
    • 2014-09-02
    • 2013-07-17
    • 2013-10-03
    • 2015-07-19
    • 2012-02-22
    相关资源
    最近更新 更多