1

我已经编写了从 SQL 中进行选择并返回值的脚本,并且该脚本使用“code = code + 1”方法来制作选择的条件。

但有时条件不存在,我该如何处理?

这里是实际的脚本部分:

SQL.execute("SELECT CodePro FROM Table WHERE CodeID = ?", x)
CodePro = SQL.fetchone()[0]

但是当没有返回值时,会打印以下错误

TypeError:“NoneType”对象不可下标

4

4 回答 4

2

无论您使用什么库来执行 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]
于 2011-12-10T08:12:42.477 回答
1

也许你可以修改 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

于 2011-12-10T05:50:18.540 回答
1
SQL.execute("SELECT CodePro FROM Table WHERE CodeID = ?", x)
try:
    CodePro = SQL.fetchone()[0]
except:
    # Your exit here
    break
于 2011-12-10T05:40:34.480 回答
0

一种选择是用 try/except 包围它,并让“except”将 CodePro 设置为一个值,让您知道它没有找到任何东西(例如:-1)。

于 2011-12-10T05:37:42.057 回答