python 2.7を使用しているときにSQLite SELECTクエリから単一の結果を取得するエレガントな方法はありますか?
例えば:
conn = sqlite3.connect('db_path.db')
cursor=conn.cursor()
cursor.execute("SELECT MAX(value) FROM table")
for row in cursor:
for elem in row:
maxVal = elem
これらのネストされたfor
sを回避し、値を直接取得する方法はありますか?私はもう試した
maxVal = cursor[0][0]
成功せずに。
Cursor.fetchone() を探していると思います:
cursor.fetchone()[0]
または、SQLを指定してスカラー結果を返すラッパー関数を作成することもできます。
def get_scalar_result(conn, sql):
cursor=conn.cursor()
cursor.execute(sql)
return cursor.fetchone()[0]
上記の構文的に正しいPythonよりも少ない可能性があることをおIびしますが、アイデアが得られることを願っています。
cursor.fetchone
が組み込まれているpysqliteを使用していない場合
cursor.execute("select value from table order by value desc limit 1")
select count(*) from ... groupy by ...
は_0
_の代わりにNone
を返すため、fetchone()[0]
は例外になります。
だから
_def get_scalar_from_sql(sqlcur, sqlcmd):
# select count(*) from .... groupy by ... returns None instead of 0
sqlcur.execute(sqlcmd)
scalar = 0
Tuple_or_None = sqlcur.fetchone()
if not Tuple_or_None is None:
(scalar,) = Tuple_or_None
return scalar
_