【问题标题】:How can I return a single element in a tuple returned by .fetchone()?如何在 .fetchone() 返回的元组中返回单个元素?
【发布时间】:2017-02-22 21:48:06
【问题描述】:

我正在使用 PyMySQL 来 ping 数据库并取回值。我就是这样做的:

cursor.execute(/*SQL Statement*/)
result = cursor.fetchone()
print (result)

我对此进行了测试,它工作正常。现在的问题是我试图只获取元组 result 中的第一个元素,我尝试这样做:

cursor.execute(/*SQL Statement*/)
result = cursor.fetchone()[0]
print (result)

但是,这只会给我以下错误:

Traceback (most recent call last):
  File "myFile.py", line 20, in <module>
    result = cursor.fetchone()[0]
KeyError: 0

我在 PyMySQL 上找不到太多文档,但这对我来说很合适,而且也很有意义,所以我不确定它为什么不起作用。这是我关注的example

【问题讨论】:

  • 你错了。 cursor.fetchone() 不是返回一个元组,而是一个 dictionary。至于为什么会这样,我不太确定。

标签: python mysql sql pysqlite


【解决方案1】:

当您使用.fetchone() 时,它会返回一个字典,其中每个值都映射到一个特定的键,该键通常是 SQL 数据库中列的名称。所以你的代码应该是这样的:

cursor.execute(/*SQL Statement*/)
result = cursor.fetchone()
print (result[key])

如果您不知道键是什么,那么只需print (results),它就会打印出包含所有键及其对应值的整个字典。

另外,请注意,如果您的查询返回不止一行,您应该使用.fetchall(),它返回一个字典列表,因此您首先需要选择一个元组,然后给它一个键。

cursor.execute(/*SQL Statement*/)
result = cursor.fetchone()
print (result[index][key])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-19
    • 1970-01-01
    • 2016-10-21
    • 2022-01-22
    • 1970-01-01
    相关资源
    最近更新 更多