0

特定の行のデータをフェッチし、それを使用して計算を実行できるようにしたいのですが、これまでのところ、次のようになっています。

import sqlite3 as lite
con=con.connect(mydatabase.db)
cur=con.cursor()
query=cur.execute("SELECT price from items where ID=1")
print(cur.fetchone())

返す

(13.5,)

これでは何の計算もできません。私は fetchone() メソッドをタプルとして扱うことに決め、これを思いつきました:

cur.fetchone()[0]

返す

13.5

私はそれで作業できますが、それは汚い解決策だと思います。データを取得する他の方法はありますか? 私も試してみました

for row in cur.fetchall():
   print(row[0])

操作できる実数を返しますが、なぜこれが機能するのかわかりません。

13.5

使える数字です。2つのソリューションのどちらが優れているか、またはより効率的なソリューションがあるかどうかはわかりません。また、少し混乱している fetch オブジェクトについて簡単に説明していただけますか。あなたの助けに感謝します。

4

2 に答える 2

2

汚れていません。これが、Python を使用した低レベルの SQL のしくみです。タプルは列を表します (selectステートメントで定義さselect *れている順序で、データを受け取る順序が保証されていないため、使用しないでください)。したがって、まったく問題ありません (クエリの最初にあるcur.fetchone()[0]限り)。priceselect

一方fetchall、クエリを満たすすべての行のリストを返します。したがって、呼び出しの結果fetchall常にタプルのリストです。ただし、空のリストである可能性があります。から次の行を取得することを除いて、基本的fetchoneには と同じことを行います (したがって、 を複数回呼び出すと、 のすべての行が取得されます)。これ以上データがない場合はが返されることに注意してください。fetchallfetchallfetchonefetchallfetchoneNone

于 2013-07-22T23:15:40.813 に答える