无法找到从未知到布尔错误的转换函数
Failed to find conversion function from unknown to boolean error
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])
上面的python/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])
我试图只更新 table 中已经存在的行。我在这里做错了什么?
您在 WHERE 谓词中遗漏了 EXISTS:
query = """UPDATE table SET last_tracked = %s, being_tracked = %s WHERE(
SELECT 'X' 从 temp_table
WHERE table.selected_id = temp_table.selected_id);"""
应该是:
query = """UPDATE table SET last_tracked = %s, being_tracked = %s WHERE EXISTS(
SELECT 'X' 从 temp_table
WHERE table.selected_id = temp_table.selected_id);"""
不?
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])
上面的python/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])
我试图只更新 table 中已经存在的行。我在这里做错了什么?
您在 WHERE 谓词中遗漏了 EXISTS:
query = """UPDATE table SET last_tracked = %s, being_tracked = %s WHERE( SELECT 'X' 从 temp_table WHERE table.selected_id = temp_table.selected_id);"""
应该是:
query = """UPDATE table SET last_tracked = %s, being_tracked = %s WHERE EXISTS( SELECT 'X' 从 temp_table WHERE table.selected_id = temp_table.selected_id);"""
不?