#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)