我似乎无法在我的数据库中打印记录的数量:
当我编程时:
cursor = cnxn.cursor()
count = cursor.execute("select count(*) from fixtures")
cursor.commit
print (count)(固定装置是我的数据库的名称)
我得到:
pyodbc.Cursor object at 0x00000000032FC150 ...rather比记录的数量多。
我在python上使用pyodbc模块。
发布于 2014-02-19 14:17:14
对于pyodbc,cursor.execute() 返回游标对象本身。.您仍然需要分别检索结果。
您可以在游标上循环以获得行;list()可以为您执行循环,并将所有行拉到列表对象中:
cursor.execute("select count(*) from fixtures")
print(list(cursor))或者你可以打电话给cursor.fetchall()。
对于只有一行的结果集,可以使用:
cursor.execute("select count(*) from fixtures")
result = cursor.fetchone()cursor.fetchone()返回一行,如果根本没有结果,则返回None。
在所有情况下,行都是列的序列,因为一个列的结果将是一个只包含一个值的元组。
在示例查询中,您使用单个列获取单个行,因此可以使用cursor.fetchone()获取单个值,然后使用索引或元组赋值。
cursor.execute("select count(*) from fixtures")
fixture_count = cursor.fetchone()[0]或
cursor.execute("select count(*) from fixtures")
fixture_count, = cursor.fetchone()您不需要在SELECT之后提交,但实际上也没有调用commit()方法,您缺少了()部分。如果您正在更改数据,请记住使用cursor.commit()。注意,cursor.commit()和cnxn.commit()做的事情完全一样;事务是按连接管理的,而不是按游标管理的。
但是,当不使用autocommit时,使用连接作为上下文管理器以确保事务根据有任何例外情况被中止或提交是更容易和更好的:
with cnxn:
# anything in this block is handled with a transaction.
# after the block the transaction is committed, unless there was an exception.发布于 2016-10-22 01:21:33
cursor.execute("SELECT COUNT (*) FROM fixtures")
rowcount = cursor.fetchone()[0]
print (rowcount)发布于 2018-05-08 20:58:19
这对我起了作用:
tempvar = cursor.fetchall()
rowcount = len(tempvar)https://stackoverflow.com/questions/21883119
复制相似问题