我该如何解决以下结果?

时间:2011-12-10 05:33:01

标签: python sql windows pyodbc

我有一个脚本,从SQL中选择一个select并返回值,脚本使用“code = code + 1”方法来制作select的条件。

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

这里是实际的脚本部分:

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

但是如果没有返回任何值,则会打印以下错误

  

TypeError:'NoneType'对象不可订阅

4 个答案:

答案 0 :(得分:2)

无论您使用什么库来执行SQL语句,都应该有一种方法来区分空结果集和具有一行或多行的结果集。检查tutorial for 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]

答案 1 :(得分:1)

SQL.execute("SELECT CodePro FROM Table WHERE CodeID = ?", x)
try:
    CodePro = SQL.fetchone()[0]
except:
    # Your exit here
    break

答案 2 :(得分:1)

也许您可以修改SQL以避免Null结果。

,例如在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

答案 3 :(得分:0)

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