【问题标题】:Why a simple subtraction resulting in different output?为什么一个简单的减法会导致不同的输出?
【发布时间】:2019-10-21 02:08:19
【问题描述】:

我正在做一个使用 Python Flask 作为后端的小型 Web 应用程序项目。一切正常,但发生了一个奇怪的小问题,我无法弄清楚为什么会这样。

@app.route('/buy/<string:id_val>', methods=['POST','GET'])
@is_logged_in
def buy(id_val):
    if request.method == 'POST':
        buy_amt = request.form['buy_amt']
        sell_price = request.form['sell_price']
        cur = mysql.connection.cursor()
        result = cur.execute('SELECT * from company_warehouse')
        value = cur.fetchone()
        cur.execute('SELECT * FROM distributor_warehouse WHERE cpID=%s',[id_val])
        temp = cur.fetchone()
        if temp != None:
            cur.execute('UPDATE company_warehouse SET QTY=%s WHERE cpID=%s',(str(int(value['QTY']) - int(buy_amt)),id_val))
            cur.execute('UPDATE distributor_warehouse SET QTY=%s WHERE cpID=%s',(str(int(buy_amt)+int(temp['QTY'])),id_val))
        else:
            cur.execute('UPDATE company_warehouse SET QTY=%s WHERE cpID=%s',(str(int(value['QTY']) - int(buy_amt)),id_val))
            cur.execute('INSERT INTO distributor_warehouse(cpID,QTY,COST_PRICE,SELL_PRICE) VALUES(%s,%s,%s,%s)',(id_val,buy_amt,value['PRICE_PER_UNIT'],sell_price))
        mysql.connection.commit()
        flash('Buyed Successfully','success')
        return redirect(url_for('buy_product'))
        cur.close()
    return render_template('buy_product.html')

这是我的 app.py,问题出现在 UPDATE 语句的 str(int(value['QTY']) - int(buy_amt)) 中。

This is the output which am getting

【问题讨论】:

    标签: python mysql database flask


    【解决方案1】:

    您总是从 company_warehouse 获取第一行,而不管您收到的 id_val 作为参数。通过更改它,数量将得到正确更新。

    cur.execute('SELECT * FROM company_warehouse WHERE cpID=%s',[id_val]) 
    value = cur.fetchone()
    

    【讨论】:

    • 现在我明白为什么只有第一行给出正确答案了。
    猜你喜欢
    • 1970-01-01
    • 2021-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多