Я написал api фляги, которая возвращает результаты из базы данных mysql и может ввести их. После того, как некоторые данные были введены в базу данных, API возвращает неверный вывод из того, что находится в таблице. Кусок кода, который входит в таблицу:
@app.route('/insertscore')
def insert_score():
checkstring = "SHOW TABLES LIKE %s"
checkcursor = mydb.cursor(buffered=True)
checkcursor.execute(checkstring, (request.args['key'],), multi=False)
rowcount = checkcursor.rowcount
checkcursor.close()
if (rowcount > 0):
string = 'insert into {}'.format(request.args['key']) + ' values (%s,%s)'
insertcursor = mydb.cursor(buffered=True)
insertcursor.execute(string, (request.args['name'], request.args['score'],))
mydb.commit()
insertcursor.close()
return Response("success", status=200)
else:
return "notfound"
Я думаю, что db.commit()
завершит результаты, но то, что возвращает другая функция, показывает по-другому. Вот другая функция для получения результатов:
@app.route('/get')
def gethighscorelist():
checkstring = "SHOW TABLES LIKE %s"
checkcursor = mydb.cursor(buffered=True)
checkcursor.execute(checkstring, (request.args['key'],))
rowcount = checkcursor.rowcount
checkcursor.close()
if (rowcount > 0):
getstring = 'SELECT * FROM {}'.format(request.args['key']) + ' ORDER BY CAST(score AS unsigned) DESC limit 5'
print(getstring)
getcursor = mydb.cursor(buffered=True)
getcursor.execute(getstring)
topscores = getcursor.fetchall()
getcursor.close()
print(topscores)
json_data = []
#field_names = [i[0] for i in getcursor.description]
field_names = [u'name', u'score']
print(field_names)
for result in topscores:
json_data.append(dict(zip(field_names, result)))
print("about to return")
print(json_data)
return Response(json.dumps(json_data), status=200)
#return str(paid(getTable))
else:
return "notfound"
Вот вывод функции get, когда она показывает конкретное поведение.
SELECT * FROM gshck ORDER BY CAST(score AS unsigned) DESC limit 5
[(u'Enzo', u'1320'), (u'new', u'140')]
SELECT * FROM gshck ORDER BY CAST(score AS unsigned) DESC limit 5
[(u'Enzo', u'1320')]
SELECT * FROM gshck ORDER BY CAST(score AS unsigned) DESC limit 5
[(u'Enzo', u'1320'), (u'new', u'140')]