1

私はスクリプトを作成してSQLから選択し、値を返します。スクリプトは「コード=コード+ 1」メソッドと連携して選択の条件を作成します。

しかし、条件が存在しない場合もあります。どうすれば処理できますか?

実際のスクリプト部分は次のとおりです。

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

ただし、値が返されない場合は、次のエラーが出力されます

TypeError: 'NoneType' オブジェクトは添字可能ではありません

4

4 に答える 4

2

SQL ステートメントの実行に使用するライブラリーには、空の結果セットと 1 つ以上の行を含む結果セットを区別する方法が必要です。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.execute("SELECT CodePro FROM Table WHERE CodeID = ?", x)
try:
    CodePro = SQL.fetchone()[0]
except:
    # Your exit here
    break
于 2011-12-10T05:40:34.480 に答える
1

Null の結果を回避するために SQL を変更できるかもしれません。</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 に答える
0

1 つのオプションは、それを try/except で囲み、「except」で CodePro を、何も見つからなかったことを知らせる値 (例: -1) に設定することです。

于 2011-12-10T05:37:42.057 に答える