python AttributeError';dict';对象没有属性
我发现以下错误:python AttributeError';dict';对象没有属性,python,django,django-database,Python,Django,Django Database,我发现以下错误: 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 cu
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(游标)[0]
的输出为:
{
"id": 1,
"filter_query_json": "{\"request_id\":\"341\",\"match_status\":\"1\",\"verdict\":\"Non Match\",\"matched\":\"s_vs_r_image_class_match\"}"
}
对象看起来很好,我也确认了filter\u query\u json
属性
缺少什么?如果对象是内置的int
dictype
,则只能获取直线值。要解决这个问题,解决方案可以是
filter_rule_sql_json = dictfetchall(cursor)[0].get('filter_query_json')
如果您的key
filter\u query\u json
不存在,则方法.get(key)
将返回None
如果对象是内置intdictype
,则只能获取直接值。要解决这个问题,解决方案可以是
filter_rule_sql_json = dictfetchall(cursor)[0].get('filter_query_json')
如果您的key
filter\u query\u json
不存在,那么方法.get(key)
将返回None
将行更改为filter\u rule\u sql\u json=dictfetchall(cursor)[0]['filter\u query\u json']
尽管我建议使用django的数据库api,而不是编写原始sql查询将行更改为
filter\u rule\u sql\u json=dictfetchall(cursor)[0]['filter\u query\u json']
尽管我建议使用django的数据库api,而不是在输出对象内部编写原始sql查询:
filter\u query\u json
@roganjosh我在输出对象内部的意思是:filter\u query\u json