让 pyodbc 为仅返回一个项目的查询返回一个简单的(标量)值



当我通过 pyodbc 从 SQL 数据库中选择数据时,我遇到了问题,最终得到这种类型的结果。

[(55.0, )]

我想要纯数字(没有"["或"(",所以我以后可以在用它计算新东西后将其插入到不同的表中。我确信这是微不足道的,但我只是无法弄清楚如何。以下是我正在使用的代码:

rows = conn.execute("SELECT price from PG").fetchall()
print(rows[:1])

给未来读者的注意:pyodbc Cursor 对象有一个 fetchval 方法:

如果有结果,fetchval() 便利方法返回第一行的第一列,否则返回 None。

(它类似于 .NET ExecuteScalar() 方法。

所以而不是做类似的事情

row_count = crsr.execute("SELECT COUNT(*) FROM TableName").fetchone()[0]

我们可以做

row_count = crsr.execute("SELECT COUNT(*) FROM TableName").fetchval()

它具有额外的优势,即如果查询不返回任何行,则返回None(而不是引发异常)。

您之所以[(55.0, )],是因为您有一个行列表(在本例中包含一行),并且每一行都是一个元组(具有单个元素,因为您刚刚选择了price)。你可以做

singlerow = rows[0]
price, = singlerow

但是,获取所有行以仅选择一行似乎很奇怪,您可能应该重新考虑您的查询。

相关内容

  • 没有找到相关文章

最新更新