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