Как вернуть все данные sql-запроса?

#python #mysql #sql #reactjs #flask

#питон #mysql #sql #реагирует на #колба

Вопрос:

Прямо сейчас мой код возвращает только lastrowid, но я хочу знать, как вернуть весь объект из моего бэкэнда, когда я вставляю новый продукт в свой бэкэнд(python, flask и MySQL). Интерфейс находится в ReactJS.

Маршрут доставки товаров:

 @app.route('/product', methods=['POST']) def insert_product():  request_payload = request.json  product_id = products_dao.insert_new_product(connection, request_payload)  response = jsonify({  'product_id': product_id  })  response.headers.add('Access-Control-Allow-Origin', '*')  return response  

функция insert_new_product

 def insert_new_product(connection, product):  cursor = connection.cursor()  query=("insert into products (name, uom_id, price_per_unit) VALUES (%s, %s, %s)")  data = (product['product_name'],product['uom_id'], product['price_per_unit'])  cursor.execute(query, data)  connection.commit()  return cursor.lastrowid  

Прямо сейчас insert_new_product возвращает только lastrowid, поэтому мне нужно обновить свой веб-сайт, чтобы получить полный объект.

полный объект выглядит следующим образом. введите описание изображения здесь

Но я получаю этот объект, когда добавляю новый продукт из интерфейса. введите описание изображения здесь

Ответ №1:

Если вы хотите, чтобы строка была только что вставлена, вы можете использовать lastrowid запрос, чтобы получить ее

 cursor.execute("select * from products where product_id = %s", (cursor.lastrowid,)) print(cursor.fetchone()) # returns result as tuple  

Но я не думаю, что вам даже нужно это делать, так как у вас уже есть нужные данные request_payload product_id .

Таким образом, вы могли бы сохранить большую часть кода таким же, как в вопросе, и изменить response это

 response = jsonify({'product_id': product_id})  

к чему-то вроде этого

 request_payload["product_id"] = product_id response = jsonify(request_payload)