1

私はpsycopgを使用してPythonでこのSQLクエリを持っています:

cr.execute('select id from test_table where va1_1=%s
            order by val_2 desc limit 1',(id, ))

クエリに複数のレコードがある場合、この方法では最後のレコードのみをフェッチします。次に、結果を変数に代入します。

x=cr.fetchone()[0]

ただし、クエリがレコードを返さない場合があり、cr.fetchone で割り当てると当然エラーになります。割り当てを試みる前に、クエリがレコードを返すかどうかを最初に確認する適切な方法は何ですか?
私は簡単に試しました:

if cr.exec....:
    x=cr.fetchone()[0]

しかし、常にFalseを返し、常にfetchoneを実行していないようです。

4

1 に答える 1

3

結果が最初にないかどうかを確認できます。 fetchone結果がなくなると、Noneを返します。

x = cr.fetchone()
if x is not None:
  result = x[0]
于 2012-12-13T17:45:22.160 に答える