首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用python计算SQL数据库中的记录数

如何使用python计算SQL数据库中的记录数
EN

Stack Overflow用户
提问于 2014-02-19 14:16:21
回答 4查看 60.9K关注 0票数 16

我似乎无法在我的数据库中打印记录的数量:

当我编程时:

代码语言:javascript
复制
cursor = cnxn.cursor()   
count = cursor.execute("select count(*) from fixtures")  
cursor.commit  
print (count)

(固定装置是我的数据库的名称)

我得到:

代码语言:javascript
复制
pyodbc.Cursor object at 0x00000000032FC150  

...rather比记录的数量多。

我在python上使用pyodbc模块。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-02-19 14:17:14

对于pyodbc,cursor.execute() 返回游标对象本身。.您仍然需要分别检索结果。

您可以在游标上循环以获得行;list()可以为您执行循环,并将所有行拉到列表对象中:

代码语言:javascript
复制
cursor.execute("select count(*) from fixtures")  
print(list(cursor))

或者你可以打电话给cursor.fetchall()

对于只有一行的结果集,可以使用:

代码语言:javascript
复制
cursor.execute("select count(*) from fixtures")
result = cursor.fetchone()

cursor.fetchone()返回一行,如果根本没有结果,则返回None

在所有情况下,行都是列的序列,因为一个列的结果将是一个只包含一个值的元组。

在示例查询中,您使用单个列获取单个行,因此可以使用cursor.fetchone()获取单个值,然后使用索引或元组赋值。

代码语言:javascript
复制
cursor.execute("select count(*) from fixtures")
fixture_count = cursor.fetchone()[0]

代码语言:javascript
复制
cursor.execute("select count(*) from fixtures")
fixture_count, = cursor.fetchone()

您不需要在SELECT之后提交,但实际上也没有调用commit()方法,您缺少了()部分。如果您正在更改数据,请记住使用cursor.commit()。注意,cursor.commit()cnxn.commit()做的事情完全一样;事务是按连接管理的,而不是按游标管理的。

但是,当不使用autocommit时,使用连接作为上下文管理器以确保事务根据有任何例外情况被中止或提交是更容易和更好的:

代码语言:javascript
复制
with cnxn:
    # anything in this block is handled with a transaction.

# after the block the transaction is committed, unless there was an exception.
票数 21
EN

Stack Overflow用户

发布于 2016-10-22 01:21:33

代码语言:javascript
复制
cursor.execute("SELECT COUNT (*) FROM fixtures")
rowcount = cursor.fetchone()[0]

print (rowcount)
票数 8
EN

Stack Overflow用户

发布于 2018-05-08 20:58:19

这对我起了作用:

代码语言:javascript
复制
tempvar = cursor.fetchall()
rowcount = len(tempvar)
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21883119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档