我有一条sql语句,它不返回任何命中结果。例如,
..。
我想检查返回了多少行,
cursor.execute(query_sql)
rs = cursor.fetchall()
这里我得到了一个异常:"(0,'No result set')“
如何防止这个异常,检查结果集是否为空?
发布于 2013-05-15 17:28:36
通常设置为0。
但是,如果您运行的语句将
从不
返回结果集(如
没有
,或者
),则不需要调用
;这样的语句不会有结果集。呼叫
足以运行该语句。
请注意,还允许数据库适配器将行数设置为
如果数据库适配器无法确定确切的受影响计数。请参阅
PEP 249
规格
该属性为
如果没有
已在游标上执行,或者接口无法确定最后一次操作的行数。
The The The
库
很容易这样做。在所有此类情况下,如果必须预先知道受影响的行数,请执行
首先在同一事务中选择。
发布于 2018-03-31 03:50:09
我遇到了行数总是返回-1的问题,无论我尝试什么解决方案。
我发现以下代码是检查null结果的一个很好的替代方法。
c.execute("SELECT * FROM users WHERE id=?", (id_num,))
row = c.fetchone()
if row == None:
print("There are no results for this query")
发布于 2013-05-15 21:18:21
如果结果集为空,MySQLdb不会引发异常。此外,cursor.execute()函数将返回一个长值,即读取结果集中的行数。因此,如果要检查空结果,可以将代码重写为
rows_count = cursor.execute(query_sql)
if rows_count > 0:
rs = cursor.fetchall()
else:
// handle empty result set
https://stackoverflow.com/questions/16561362
复制相似问题