问题描述
我目前正在使用python数据库编写一个rpg游戏,该游戏使用MysqL数据库存储玩家信息。但是,我遇到了一个问题。
playerinfo Table
userID | money | xp |
1 | 200 | 20 |
2 | 100 | 10 |
我正在尝试仅选择金额来选择金额。我现在的选择查询是
SELECT money FROM playerinfo WHERE id = 1
def get_money_stats(user_id):
global monresult
remove_characters = ["{","}","'"]
try:
with connection.cursor() as cursor:
monsql = "SELECT money FROM players WHERE userid = %s"
value = user_id
cursor.execute(monsql,value)
monresult = str(cursor.fetchone())
except Exception as e:
print(f"An error Occurred> {e}")
当前输出:
{'money': 200}
期望的输出:
200
基本上,我要选择的只是玩家行中的INT / DATA(由唯一的用户ID标识)。我怎么做?我唯一的解决方案是用其他字符替换字符,但是我真的不想这样做,因为它带来了极大的不便和混乱。还有另一种重新格式化/选择数据的方法吗?
解决方法
似乎获取一行可以为您提供所选列及其值的字典,这对我来说似乎是正确的方法。您只需使用要检索的列访问字典:
monresult = cursor.fetchone()['money']
如果您不想再次指定该列(应该使用该列),则可以将字典的值作为列表来获取,并检索第一个:
monresult = list(cursor.fetchone().values())[0]
我不建议使用最后一种方法,因为它在很大程度上取决于查询的当前状态,如果更改查询,则可能必须更改。