首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何检查结果集是否为空?

如何检查结果集是否为空?
EN

Stack Overflow用户
提问于 2013-05-15 17:26:39
回答 8查看 154.9K关注 0票数 61

我有一条sql语句,它不返回任何命中结果。例如,

..。

我想检查返回了多少行,

代码语言:javascript
复制
cursor.execute(query_sql)

rs = cursor.fetchall()

这里我得到了一个异常:"(0,'No result set')“

如何防止这个异常,检查结果集是否为空?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2013-05-15 17:28:36

通常设置为0。

但是,如果您运行的语句将

从不

返回结果集(如

没有

,或者

),则不需要调用

;这样的语句不会有结果集。呼叫

足以运行该语句。

请注意,还允许数据库适配器将行数设置为

如果数据库适配器无法确定确切的受影响计数。请参阅

PEP 249

规格

该属性为

如果没有

已在游标上执行,或者接口无法确定最后一次操作的行数。

The The The

很容易这样做。在所有此类情况下,如果必须预先知道受影响的行数,请执行

首先在同一事务中选择。

票数 67
EN

Stack Overflow用户

发布于 2018-03-31 03:50:09

我遇到了行数总是返回-1的问题,无论我尝试什么解决方案。

我发现以下代码是检查null结果的一个很好的替代方法。

代码语言:javascript
复制
c.execute("SELECT * FROM users WHERE id=?", (id_num,))
row = c.fetchone()
if row == None:
   print("There are no results for this query")
票数 26
EN

Stack Overflow用户

发布于 2013-05-15 21:18:21

如果结果集为空,MySQLdb不会引发异常。此外,cursor.execute()函数将返回一个长值,即读取结果集中的行数。因此,如果要检查空结果,可以将代码重写为

代码语言:javascript
复制
rows_count = cursor.execute(query_sql)
if rows_count > 0:
     rs = cursor.fetchall()
else:
     // handle empty result set
票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16561362

复制
相关文章

相似问题

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