我写了一个flask 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')]