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 回答