小编ms1*_*s18的帖子

python中的gzip url请求

我正在使用带有请求模块的 python 从带有 json 提要的 api 获取数据。当我将 gzip 请求包含为编码时,我没有看到任何变化。我在这里以错误的方式实施它吗?

my_headers = {'accept-encoding':'gzip'}
response = requests.get(url, headers=my_headers)
print(response.headers)
print(len(response.content))
Run Code Online (Sandbox Code Playgroud)

响应头总是返回

'Content-Encoding': 'gzip'
Run Code Online (Sandbox Code Playgroud)

但是无论是否包含我的请求标头都会发生这种情况,长度和加载时间也不会改变

url gzip python-requests

6
推荐指数
1
解决办法
1万
查看次数

Django使用Postgres在JSONField中注释计数

使用Django,我有一个JSONField类型的字段。我想对json中的嵌套键/值进行不同的计数。在普通场中,您可以像下面这样进行操作

model.objects.values('field_name')\
.annotate(total=Count('field_name')).order_by('-total')
Run Code Online (Sandbox Code Playgroud)

这不适用于JSONField。

示例模型

class Pet(models.Model):
    data = JSONField()
Run Code Online (Sandbox Code Playgroud)

数据示例

  {
    'name':'sparky',
    'animal':'dog',
    'diet':{
        'breakfast':'biscuits',
        'dinner':'meat',
    }
}
Run Code Online (Sandbox Code Playgroud)

Pet.objects.values('data__diet__dinner')\
.annotate(total=Count('data__diet__dinner')).order_by('-total')
Run Code Online (Sandbox Code Playgroud)

的例外

TypeError: unhashable type: 'list'
Run Code Online (Sandbox Code Playgroud)

执行此操作的正确方法是什么?

django postgresql django-jsonfield django-annotate

4
推荐指数
1
解决办法
405
查看次数