【问题标题】:How to return whole sql query data?如何返回整个sql查询数据?
【发布时间】:2022-01-16 04:55:28
【问题描述】:

现在我的代码只返回 lastrowid 但我想知道当我将新产品插入后端(python、flask 和 MySQL)时如何从后端返回整个对象。 前端在 ReactJS 中。

POST产品路线:

@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

插入新产品功能

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 所以我需要刷新我的网站以获取完整的对象。

完整的对象看起来像这样。

但是当我从前端添加新产品时,我得到了这个对象。

【问题讨论】:

    标签: python mysql sql reactjs flask


    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-23
      • 1970-01-01
      • 2020-02-06
      • 1970-01-01
      • 1970-01-01
      • 2010-12-08
      • 2014-11-03
      相关资源
      最近更新 更多