2017-02-13 8 views
1

を返す最初の項目働いて取得し、モジュールは、クエリの実行結果を返しますfetchoneと呼ばれるこの機能を有している:私はkinterbasdbモジュールと関数値

cursor.execute("....") 
cursor.fetchone() 

これはタプルを返します。 ("value1",)、私は最初の項目にアクセスしたいと思いますが、最後に[0]を避けてください。それほど言わないので、それは魔法の数です。出来ますか?おそらく機能の一部を構築するのでしょうか?

私がしようとしていた。

value, _ = cursor.fetchone() 

しかし、これは戻っている:ValueError: need more than 1 value to unpack、インデックス1は何も持っていないので。

+0

どのバージョンのPythonですか? 'value、* _ = ... 'は使えますか?また、私はこの場合マジックナンバーとして0を数えません。 – jonrsharpe

答えて

5

に問題:

value, _ = cursor.fetchone() 
# ^a variable with identifier _ 

は、それがここはあなたが解凍したいタプルの2つの要素を期待しますが、タプルが一つだけの要素が含まれていることです。ただし、コンマを書き込むことによってこの問題を解決することができますが、何のような変数:あなたはカンマ,を記述する必要が

value, = cursor.fetchone() 
# ^no variable 

心:それを省略することがタプルを解凍しないます。

またはタプルの要素数が未知(ただし、ゼロよりも大きい)場合には、あなたはateriskを使用することができる:

value, *_ = cursor.fetchone() 

タプル_の残りの要素をアンパックなります。式が1つの要素を持つタプルを持つ場合、__ ==()(要素のないタプル)に等しくなります。例えば(1,4,2,5)を解凍すると、value == 1_ == (4,2,5)になります。

+1

あなたの答えをありがとう。私はそれから学んでいます:-) –

関連する問題