2012-12-13 150 views
0

我使用psycopg在python這個SQL查詢:蟒蛇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。

回答

2

你可以檢查結果是否第一。當沒有更多結果時,fetchone返回None。

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

謝謝dm,我想我應該先詳細閱讀fetchone! – 3a2roub