我已经编写了从 SQL 中进行选择并返回值的脚本,并且该脚本使用“code = code + 1”方法来制作选择的条件。
但有时条件不存在,我该如何处理?
这里是实际的脚本部分:
SQL.execute("SELECT CodePro FROM Table WHERE CodeID = ?", x)
CodePro = SQL.fetchone()[0]
但是当没有返回值时,会打印以下错误
TypeError:“NoneType”对象不可下标
无论您使用什么库来执行 SQL 语句,都应该有一种方法来区分空结果集和具有一行或多行的结果集。查看pyodbc 的教程。像这样的东西会起作用:
SQL.execute("SELECT CodePro FROM Table WHERE CodeID = ?", x)
row = SQL.fetchone()
if row: # check if there was at least one row returned
CodePro = row[0]
也许你可以修改 SQL 以避免 Null 结果。</p>
例如在 SQLServer 中,使用这个:
SELECT COALESCE(CodePro,-1) FROM Table WHERE CodeID = ?
如果 CodePro 为 Null,它将返回 -1。
了解更多关于 COALESCE: http: //msdn.microsoft.com/en-us/library/aa258244 (v=sql.80).aspx
SQL.execute("SELECT CodePro FROM Table WHERE CodeID = ?", x)
try:
CodePro = SQL.fetchone()[0]
except:
# Your exit here
break
一种选择是用 try/except 包围它,并让“except”将 CodePro 设置为一个值,让您知道它没有找到任何东西(例如:-1)。