让pyodbc为只返回一个项

时间:2017-10-16 17:51:06

标签: python pyodbc

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

  

[(55.0,)]

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

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

2 个答案:

答案 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

但是,获取所有行只选择一行似乎很奇怪,你应该重新考虑一下你的查询。