我尝试过多种方式发送一个元组参数,如:
{"name": "@p", "value": tuple(['a','b']) }
查询,简单如下:
select * from c where c.p in @p
我总是遇到语法错误或没有结果。 当我将参数从控制台复制到查询时,我得到了预期的结果。
帮助?
答案 0 :(得分:1)
根据REST参考Querying DocumentDB resources using the REST API
的{{3}}部分,对参数值的要求如下所示。
参数必需。指定为名称值对的JSON参数数组。参数数组可以包含从零到多个参数。每个参数必须具有以下值:name:参数的名称。参数名称必须是有效的字符串文字,并以“@”开头。 value:参数的值。可以是任何有效的JSON值(字符串,数字,对象,数组,布尔值或null)。
因此,您可以为DocumentDb查询传递Python元组参数,请使用['a', 'b']
而不是tuple(['a', 'b'])
之类的数组,或者只使用list(tuple(['a', 'b']))
之类的代码进行转换。
<强>更新强>
我查看了pydocumentdb
的源代码,发现DocumentDb查询的请求正文中的parameters
是使用方法json.wraps
序列化的,tuple
将序列化list
到json.wraps(('a', 'b'))
。例如,执行代码['a', 'b']
,然后获取结果pydocumentdb
。因此,如果使用null
,您的案例的唯一方法是直接将元组值嵌入到查询字符串中。