当我通过 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
但是,获取所有行以仅选择一行似乎很奇怪,您可能应该重新考虑您的查询。