我正在努力从python-flask

时间:2019-04-20 06:38:41

标签: python flask

我正在尝试从mysql获取记录,如果找到记录,则在mysql记录中添加成功状态并通过jsonify函数返回,另一方面,我正在获取响应,然后检查状态是否为成功或不是。

这是我的回复格式

 [ { "SQL_STATUS": true }, { "id": "126","etc":"etc"} ]

我需要检查SQL_STATUS是true还是false,所以我尝试了以下方法

      response.SQL_STATUS   

但出现以下错误

      AttributeError: 'Response' object has no attribute 'SQL_STATUS'

这些是我的代码

 def Details(self,request):

    res = self.db.SelectByConditionModel(request,self.model)


    if res.SQL_STATUS == True:
        response_data = SuccessResponse('','Success')
    else:
        response_data = ErrorResponse(res,"Database Error")

    return response_data

这是我正在执行选择操作的基础

 @staticmethod
def SelectByConditionModel(request,model):

    try:

        where_condition  = []

        for key in request:
            where_condition.append(key+"='"+conn.escape_string(str(request[key]))+"'")


        where_condition_str = ', '.join(where_condition)

        sql = ''' SELECT * from %s WHERE %s ''' %(model.TABLE, where_condition_str)


        cursor.execute(sql)
        row_headers=[x[0] for x in cursor.description]
        conn.commit()
        data = cursor.fetchall()

        json_data=[]

        json_data.append({"SQL_STATUS" : True})

        for result in data:
            json_data.append(dict(zip(row_headers,result)))


        return jsonify(json_data)

    except Exception as e:

        return str(e)

我需要检查SQL_STATUS是对还是错,请帮助我

1 个答案:

答案 0 :(得分:2)

您的json_datalistlist是通过索引而不是通过属性访问的。

json_data[0]['SQL_STATUS']

这会给您您想要的。但是,您需要在返回之前将其转换为字符串-因此,您需要将其转换为对象才能像这样访问它。

@staticmethod
def SelectByConditionModel(request,model):
    try:
        where_condition  = []
        for key in request:
          where_condition.append(key+"='"+conn.escape_string(str(request[key]))+"'")
        where_condition_str = ', '.join(where_condition)
        sql = ''' SELECT * from %s WHERE %s ''' %(model.TABLE, where_condition_str)
        cursor.execute(sql)
        row_headers=[x[0] for x in cursor.description]
        conn.commit()
        data = cursor.fetchall()

        json_data=[]

        for result in data:
            json_data.append(dict(zip(row_headers,result)))

        return True, jsonify(json_data)

    except Exception as e:

        return False, str(e)

在这里,我将分别从方法中返回SQL_STATUS。而不是将其添加到响应中。然后,您可以这样做:

def Details(self,request):
    sql_status, res = self.db.SelectByConditionModel(request,self.model)
    if sql_status:
        response_data = SuccessResponse('','Success')
    else:
        response_data = ErrorResponse(res, "Database Error")
    return response_data