当我通过pyodbc从SQL数据库中选择数据时,我遇到了一个问题,我最终得到了这种结果。
[(55.0,)]
我想要纯数字(没有“[”或“(”所以我稍后可以用它计算新东西后将它插入到另一个表中。我确信这是微不足道的但是我还是无法弄清楚如何。以下是我正在使用的代码:
rows = conn.execute("SELECT price from PG").fetchall()
print(rows[:1])
答案 0 :(得分:3)
备注未来读者: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
(而不是抛出异常)的优点。
答案 1 :(得分:1)
你有[(55.0, )]
,因为你有一个行列表(在这个例子中包含一行),每行都是一个元组(只有一个元素,因为你刚刚选择了price
)。你可以做到
singlerow = rows[0]
price, = singlerow
但是,获取所有行只选择一行似乎很奇怪,你应该重新考虑一下你的查询。