【问题标题】:How do I get only the value of a column identified by a unique userid in MySQL? pls refer to Question for more detailed explanation如何仅获取由 MySQL 中唯一用户标识标识的列的值?请参阅问题以获得更详细的解释
【发布时间】:2020-12-20 11:53:57
【问题描述】:

我目前正在用 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()[0]?
  • 为什么是[0] 而不是[1]
  • 我认为 fetchone() 在你的情况下应该返回一个元组 (200,) 对吧?
  • 它目前正在返回{'money': 0},所以我相信它是一个字典,而不是一个元组

标签: python python-3.x mysql-python mysql-connector


【解决方案1】:

似乎提取一行会给您一个包含所选列及其值的字典,这对我来说似乎是正确的方法。您应该简单地使用要检索的列访问字典:

monresult = cursor.fetchone()['money']

如果您不想再次指定列(您应该指定),您可以将字典的值作为列表获取并检索第一个:

monresult = list(cursor.fetchone().values())[0]

我不推荐最后一种方法,因为它在很大程度上取决于查询的当前状态,并且如果查询发生更改,它可能必须更改。

【讨论】:

    猜你喜欢
    • 2014-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-06
    • 1970-01-01
    • 1970-01-01
    • 2015-07-31
    相关资源
    最近更新 更多