Я изо всех сил пытаюсь получить значение по ключу от объекта jsonify в python-flask - PullRequest
0 голосов
/ 20 апреля 2019

Я пытаюсь получить записи из 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 имеет значение true или false, пожалуйста, помогите мне

1 Ответ

2 голосов
/ 20 апреля 2019

Ваш json_data является list.list s доступны по индексу, а не по атрибутам.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...