Как я могу решить следующий результат?

1

У меня есть и скрипт make select из SQL и возвращает значение, и скрипт работает с методом "code = code + 1", чтобы сделать условия выбора.

Но иногда условие не существует, как я могу прокормить?

Здесь фактическая часть скрипта:

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

но когда значение не возвращается, выводится следующая ошибка

TypeError: объект "NoneType" не подлежит расшифровке

Теги:
pyodbc

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]
1
SQL.execute("SELECT CodePro FROM Table WHERE CodeID = ?", x)
try:
    CodePro = SQL.fetchone()[0]
except:
    # Your exit here
    break
1

Возможно, вы можете изменить SQL, чтобы избежать результата Null.

например, в SQLServer, используйте это:

SELECT COALESCE(CodePro,-1) FROM Table WHERE CodeID = ?

он вернет -1, если CodePro - Null.

узнать больше о COALESCE: http://msdn.microsoft.com/en-us/library/aa258244(v=sql.80).aspx

  • 0
    Да, но набор результатов с одной строкой с NULL отличается от пустого набора результатов.
0

Один из вариантов заключается в том, чтобы окружить его с помощью try/except и иметь "кроме" set CodePro значение, которое позволяет вам знать, что он ничего не нашел (например: -1).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню