我在使用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。

最佳答案

您可以先检查结果是否为空。没有更多结果时,fetchone将返回无。

x = cr.fetchone()
if x is not None:
  result = x[0]

10-07 13:30