2011-08-11 19 views
0

pythonを使用しているときにSQLiteクエリから値が返されたかどうかを調べる方法を探しています。PythonでSQLite戻り値の型がありません

conn = sqlite3.connect('/path/to/database.db') 
cursor=conn.cursor() 
t=(value,) 
cursor.execute("select field from table where other_field = ?", t) 
returnObject = cursor.fetchone()[0] 

テーブルが一致する値が含まれている場合、それはreturnObjectに格納されます。

問題は、データベースに要求に一致するエントリがない場合に発生します。その場合、私は得ますexceptions.TypeError: unsubscriptable object

このブロック全体をtry/expectブロックに置く以外に、データベースによって何かが返されたかどうかを知る方法があります。

また、私は余分なクエリを発行する可能性があることを認識していますが、これにより接続が煩雑になります。

答えて

6

あなたの好みに応じて、いくつかのオプションがあります。

オプション1:returnObjectの値を確認してから使用してください。

conn = sqlite3.connect('/path/to/database.db') 
cursor=conn.cursor() 
t=(value,) 
cursor.execute("select field from table where other_field = ?", t) 
returnObject = cursor.fetchone() 
if returnObject: 
    print returnObject[0] 
else: 
    print "Nothing found!" 

オプション2:​​の戻り値を使用します。結果の行数が格納されます。

conn = sqlite3.connect('/path/to/database.db') 
cursor=conn.cursor() 
t=(value,) 
rowCount = cursor.execute("select field from table where other_field = ?", t) 
if rowCount > 0: 
    returnObject = cursor.fetchone()[0]