flask-mysqldb Произвольные значения при обновлении базы данных

Достаточно долго уже пытаюсь решить проблему, безуспешно.

Вкратце:

Нужно:

  • получить текущее состояние счёта
  • прибавить/отнять от него n число
  • обновить значение в базе.

Код:

from flask_mysqldb import MySQL

app = Flask(__name__)
application = app

app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_USER'] = 'root'
app.config['MYSQL_PASSWORD'] = 'root'
app.config['MYSQL_DB'] = 'table'
app.config['MYSQL_CURSORCLASS'] = 'DictCursor'

mysql=MySQL(app)
@app.route('/user/updateUser')
def udpade_user_money():
if 'user' and 'delta' in request.args:
        user = str(request.args['user'])
        delta = int(request.args['delta'])
        cursor = mysql.connection.cursor()
        cursor.execute("SELECT money FROM users WHERE user = '{}'".format(user))
        new = int(cursor.fetchall()[0]['money'])+delta
        query = "UPDATE users SET money = {} WHERE user = '{}'".format(new,user)
        cursor.execute(query)
        mysql.connection.commit()
        cursor.close()
        return 'True'

Пробовал по-другому форматировать строку:

   query = "UPDATE users SET money = %s WHERE user = %s"
   cursor.execute(query,(new,user))

Проверял входящие значения. Думал, что в курсоре хранится информация о старом запросе, хотя это очень маловероятно и не логично. Пробовал обновлять курсор после каждого обращения к бд. Все сыпется после того, как происходит обновление в базе. Т.е. в запросе n=100, в базе же появляется число 92, и после каждого перезапуска может и сохранится 100, но последующие запросы будут некорректны. Пытался найти закономерность, может, где-то что-то неправильно складывается, но входные данные абсолютно верные.


Ответы (0 шт):