2015-07-02 32 views
0
query = """UPDATE table SET last_tracked = %s, being_tracked = %s WHERE(
       SELECT 'X' FROM temp_table 
       WHERE table.selected_id = temp_table.selected_id);""" 
cur.execute(query, [datetime.utcnow().isoformat(' ').split('.')[0] + ' z', True]) 

以上蟒蛇/ psycopg2代碼提供了以下錯誤:無法從未知找到轉換功能的布爾錯誤

ERROR: failed to find conversion function from unknown to boolean 
STATEMENT: UPDATE table 
      SET last_tracked = '2015-07-02 20:32:00 z', being_tracked = true 
      WHERE(
       SELECT 'X' FROM temp_table 
       WHERE table.selected_id = temp_table.selected_id); 

下面的代碼工作完全正常:

query = """UPDATE table SET being_tracked = %s 
       WHERE NOT EXISTS(
        SELECT 'X' FROM temp_table 
        WHERE table.selected_id = temp_table.selected_id);""" 
cur.execute(query, [False]) 

我m試圖只更新表中已經存在的行。我在這裏做錯了什麼?

+0

哪個是屬性last_tracked的類型? – Renzo

+0

帶時區的時間戳 – jeebface

回答

1

You're缺少存在於WHERE謂詞:

查詢= 「」「UPDATE SET表= last_tracked%S,being_tracked =%S其中( SELECT 'X' FROM temp_table WHERE table.selected_id = temp_table.selected_id); 「」 「

應該是:

查詢= 」「」 UPDATE SET表= last_tracked%S,being_tracked =%S其中EXISTS(SELECT 'X' FROM temp_table WHERE表.selected_id = temp_table.select ed_id);「」「

不?

+0

哎呀!我對SQL很陌生,不知道你必須把EXISTS放在那裏。問題解決了。 – jeebface

相關問題