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, но последующие запросы будут некорректны. Пытался найти закономерность, может, где-то что-то неправильно складывается, но входные данные абсолютно верные.