当我通过pyodbc从SQL数据库中选择数据时,我遇到了一个问题,最终导致出现这种类型的结果。让pyodbc为只返回一个项目的查询返回一个简单(标量)值
[(55.0)]
我想要的纯数(没有“[”或“(”,所以我以后可以用它来计算新的东西后将其插入到一个不同的表。我。我相信这是微不足道的,但我只是一直无法弄清楚如何下面是我使用的代码:
rows = conn.execute("SELECT price from PG").fetchall()
print(rows[:1])
当我通过pyodbc从SQL数据库中选择数据时,我遇到了一个问题,最终导致出现这种类型的结果。让pyodbc为只返回一个项目的查询返回一个简单(标量)值
[(55.0)]
我想要的纯数(没有“[”或“(”,所以我以后可以用它来计算新的东西后将其插入到一个不同的表。我。我相信这是微不足道的,但我只是一直无法弄清楚如何下面是我使用的代码:
rows = conn.execute("SELECT price from PG").fetchall()
print(rows[:1])
你有[(55.0,)]
因为你行的名单(含在这个例子中单列),并且每一行都是一个元组(只有一个元素,因为您刚刚选择了price
)。你可以做
singlerow = rows[0]
price, = singlerow
但是,获取所有行以选择一个似乎很奇怪,你应该重新考虑你的查询。
为未来的读者注:pyodbc光标对象有一个fetchval方法:
的fetchval()便利方法返回,如果有结果的第一行的第一列,否则返回无。
(这类似于.NET ExecuteScalar()
方法。)
因此,而不是做一些像
row_count = crsr.execute("SELECT COUNT(*) FROM TableName").fetchone()[0]
,我们可以做
row_count = crsr.execute("SELECT COUNT(*) FROM TableName").fetchval()
它返回None
的附加优势(而不是抛出一个例外)如果查询没有返回任何行。
但是,在这里您获取所有记录,并且您只打印第一个记录? –