Как я могу решить следующий результат? - PullRequest
1 голос
/ 10 декабря 2011

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

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

Здесь актуальная часть скрипта:

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

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

TypeError: объект 'NoneType' не может быть подписан

Ответы [ 4 ]

2 голосов
/ 10 декабря 2011

В любой библиотеке, которую вы используете для выполнения операторов 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 голос
/ 10 декабря 2011
SQL.execute("SELECT CodePro FROM Table WHERE CodeID = ?", x)
try:
    CodePro = SQL.fetchone()[0]
except:
    # Your exit here
    break
1 голос
/ 10 декабря 2011

Может быть, вы можете изменить 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 голосов
/ 10 декабря 2011

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

...