python - python AttributeError 'dict' 对象没有属性
问题描述
我收到以下错误:
AttributeError at /filterrule/createresultset/
'dict' object has no attribute 'filter_query_json'
这是代码:
from django.db import connections
def fetch_filter_rule_sql_from_ui_db(filter_rule_id):
with connections['frontend'].cursor() as cursor:
query = "SELECT id, filter_query_json FROM dmf_filter_rules WHERE id=%s LIMIT 1"
cursor.execute(query, [filter_rule_id])
filter_rule_sql_json = dictfetchall(cursor)[0].filter_query_json
# filter_rule_sql_json = dictfetchall(cursor)[0][filter_query_json]
return filter_rule_sql_json
def dictfetchall(cursor):
"Return all rows from a cursor as a dict"
columns = [col[0] for col in cursor.description]
return [
dict(zip(columns, row))
for row in cursor.fetchall()
]
输出dictfetchall(cursor)[0]
为:
{
"id": 1,
"filter_query_json": "{\"request_id\":\"341\",\"match_status\":\"1\",\"verdict\":\"Non Match\",\"matched\":\"s_vs_r_image_class_match\"}"
}
对象对我来说看起来不错,我也确认了该filter_query_json
属性。
什么不见了?
解决方案
如果对象是内置的 int ,您只能获得直接值dictype
。要解决此问题,解决方案可以是
filter_rule_sql_json = dictfetchall(cursor)[0].get('filter_query_json')
如果您的密钥filter_query_json
不存在,该方法.get(key)
将返回None
.
推荐阅读
- postgresql - Postgres 在循环中为选定列中的所有值插入 N 行
- asp.net-core - 在反向代理后面使用 JwtBearerOptions.RequireHttpsMetadata=false 可以吗?
- r - 在 R 中使用 ggplot2 的基本绘图
- oracle - 响应计划作业的完成
- text - 如何在导航侧抽屉中右对齐文本
- javascript - 如何添加带有文本框的变量来编辑它?
- c# - dbcontext.SaveChanges(); 更换模型时不更新
- swift - SwiftUI 状态 PropertyWrapper 行为
- javascript - Laravel 事件广播没有被拾取 laravel-echo-server
- c++ - 为 sLinkedList 编写插入函数时抛出异常