簡體   English   中英

python AttributeError 'dict' object 沒有屬性

[英]python AttributeError 'dict' object has no attribute

我收到以下錯誤:

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()
    ]

output 到dictfetchall(cursor)[0]是:

{
    "id": 1,
    "filter_query_json": "{\"request_id\":\"341\",\"match_status\":\"1\",\"verdict\":\"Non Match\",\"matched\":\"s_vs_r_image_class_match\"}"
}

Object 對我來說看起來不錯,我也確認了filter_query_json屬性。

什么不見了?

如果 object 是內置的 int dictype ,您只能獲得直接值。 要解決此問題,解決方案可以是

filter_rule_sql_json = dictfetchall(cursor)[0].get('filter_query_json')

如果您的密鑰filter_query_json不存在,則方法.get(key)將返回None

將您的行更改為filter_rule_sql_json = dictfetchall(cursor)[0]['filter_query_json']

雖然我建議使用 django 的數據庫 api 而不是編寫原始 sql 查詢

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM