MySQL дает неверные результаты по нескольким запросам - PullRequest
0 голосов
/ 05 ноября 2018

Я написал 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')]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...